⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s04.htm

📁 Java2Swingt界面设计
💻 HTM
📖 第 1 页 / 共 4 页
字号:
              private int rainh = rain.getIconHeight();</p>            <p> public void paintComponent(Graphics g) {<br>              Dimension size = getSize();</p>            <p> for(int row=0; row &lt; size.height; row += rainh)<br>              for(int col=0; col &lt; size.width; col += rainw)<br>              rain.paintIcon(this,g,col,row);<br>              }<br>              }<br>              class ColoredPanel extends JPanel {<br>              public void paintComponent(Graphics g) {<br>              super.paintComponent(g);</p>            <p> Dimension size = getSize();</p>            <p> g.setColor(Color.black);<br>              g.drawRect(0,0,size.width-1,size.height-1);</p>            <p> g.setColor(Color.red);<br>              g.fillRect(size.width/2-25,size.height/2-25,50,50);<br>              }<br>              public Dimension getPreferredSize() {<br>              return new Dimension(100,100);<br>              }<br>              }</p>            <hr size="1" noshade>            <p>&nbsp;</p>            <p> 4.3.7 立即绘制Swing组件</p>            <p>&nbsp;</p>            <p align="center"><b>例4-8 在事件处理方法中使用paintImmediately()</b></p>            <hr size="1" noshade>            import javax.swing.*;<br>            import java.awt.*;<br>            import java.awt.event.*;            <p>public class TestApplet extends JApplet {<br>              public void init() {<br>              Container contentPane = getContentPane();<br>              final JPanel panel = new JPanel();<br>              JButton button = new JButton(&quot;repaint&quot;);</p>            <p> panel.setBackground(Color.blue);<br>              panel.setPreferredSize(new Dimension(100,100));</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(button);<br>              contentPane.add(panel);</p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              Color c = panel.getBackground();<br>              Dimension sz = panel.getSize();</p>            <p> panel.setBackground(<br>              c == Color.blue ? Color.red : Color.blue);</p>            <p> panel.paintImmediately(<br>              0,0,sz.width,sz.height);</p>            <p> // for illustrative purposes only<br>              try {<br>              Thread.currentThread().sleep(5000);<br>              }<br>              catch(InterruptedException ex) {<br>              ex.printStackTrace();<br>              }<br>              }<br>              });<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 4.4 双缓存</p>            <p>&nbsp;</p>            <p align="center"><b>例4-9 双缓存测试小应用程序</b></p>            <hr size="1" noshade>            import javax.swing.*;<br>            import java.awt.*;<br>            import java.awt.event.*;            <p>public class DoubleBufferingTest extends JApplet {<br>              public void init() {<br>              final JSlider slider = <br>              new JSlider(JSlider.HORIZONTAL,0,100,50);</p>            <p> final Container contentPane = getContentPane();<br>              JCheckBox dbcheckBox = new JCheckBox(&quot;double buffered&quot;);<br>              JPanel controlPanel = new JPanel();</p>            <p> dbcheckBox.setSelected(true);<br>              controlPanel.add(dbcheckBox);</p>            <p> slider.setPaintTicks(true);<br>              slider.setMinorTickSpacing(5);<br>              slider.setMajorTickSpacing(15);</p>            <p> contentPane.add(controlPanel, &quot;North&quot;);<br>              contentPane.add(slider, &quot;Center&quot;);</p>            <p> dbcheckBox.addItemListener(new ItemListener() {<br>              public void itemStateChanged(ItemEvent event) {</p>            <p> if(event.getStateChange() == ItemEvent.SELECTED) {<br>              slider.setDoubleBuffered(true);<br>              }<br>              else {<br>              slider.setDoubleBuffered(false);<br>              }<br>              }<br>              });<br>              }<br>              }</p>            <hr size="1" noshade>            <p align="center"><b>例4-10 为组件的容器禁用双缓存</b></p>            <hr size="1" noshade>            import javax.swing.*;<br>            import java.awt.*;<br>            import java.awt.event.*;            <p>public class DoubleBufferingTest extends JApplet {<br>              public void init() {<br>              final Container contentPane = getContentPane();</p>            <p> JSlider slider = new JSlider(JSlider.HORIZONTAL,0,100,50);<br>              JCheckBox dbcheckBox = new JCheckBox(&quot;double buffered&quot;);<br>              JPanel controlPanel = new JPanel();</p>            <p> dbcheckBox.setSelected(true);<br>              controlPanel.add(dbcheckBox);</p>            <p> slider.setPaintTicks(true);<br>              slider.setMinorTickSpacing(5);<br>              slider.setMajorTickSpacing(15);</p>            <p> contentPane.add(controlPanel, &quot;North&quot;);<br>              contentPane.add(slider, &quot;Center&quot;);</p>            <p> dbcheckBox.addItemListener(new ItemListener() {<br>              public void itemStateChanged(ItemEvent event) {<br>              JComponent cp = (JComponent)getContentPane();<br>              JComponent rp = (JComponent)getRootPane();</p>            <p> if(event.getStateChange() == ItemEvent.SELECTED) {<br>              rp.setDoubleBuffered(true);<br>              cp.setDoubleBuffered(true);<br>              }<br>              else {<br>              rp.setDoubleBuffered(false);<br>              cp.setDoubleBuffered(false);<br>              }<br>              }<br>              });<br>              }<br>              }</p>            <hr size="1" noshade>            <p align="center"><b>例4-11 调用RepaintManager.getDoubleBufferingEnabled()</b></p>            <hr size="1" noshade>            import javax.swing.*;<br>            import java.awt.*;<br>            import java.awt.event.*;            <p>public class DoubleBufferingTest extends JApplet {<br>              public void init() {<br>              Container contentPane = getContentPane();<br>              JCheckBox dbcheckBox = new JCheckBox(&quot;double buffered&quot;);<br>              JPanel controlPanel = new JPanel();<br>              final JSlider slider = <br>              new JSlider(JSlider.HORIZONTAL,0,100,50);</p>            <p> dbcheckBox.setSelected(true);<br>              controlPanel.add(dbcheckBox);</p>            <p> slider.setPaintTicks(true);<br>              slider.setMinorTickSpacing(5);<br>              slider.setMajorTickSpacing(15);</p>            <p> contentPane.add(controlPanel, &quot;North&quot;);<br>              contentPane.add(slider, &quot;Center&quot;);</p>            <p> dbcheckBox.addItemListener(new ItemListener() {<br>              public void itemStateChanged(ItemEvent event) {<br>              RepaintManager rm =<br>              RepaintManager.currentManager(slider);</p>            <p> if(event.getStateChange() == ItemEvent.SELECTED) {<br>              rm.setDoubleBufferingEnabled(true);<br>              }<br>              else {<br>              rm.setDoubleBufferingEnabled(false);<br>              }<br>              }<br>              });<br>              }<br>              }</p>            <hr size="1" noshade>            <p align="center"><b>例4-12 动画测试小应用程序</b></p>            <hr size="1" noshade>            <hr size="1" noshade>            <p align="center"><b>例4-13 AnimationPane类清单</b></p>            <hr size="1" noshade>            <hr size="1" noshade>            <p>&nbsp;</p>            <p>&nbsp;</p>            <p>&nbsp;</p>            <p>&nbsp;</p>            <p> 4.5 调试图形</p>            <p>&nbsp;</p>            <p align="center"><b>例4-14 为调试图形使用Log(日志)和Flash(闪烁)选项</b></p>            <hr size="1" noshade>            import javax.swing.*;<br>            import javax.swing.event.*;<br>            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.io.*;            <p>public class DebugGraphicsTest extends JApplet {<br>              private JSlider slider = new JSlider();<br>              boolean logIsOn = false, flashIsOn = false;</p>            <p> public void init() {<br>              Container cp = getContentPane();<br>              RepaintManager rm = <br>              RepaintManager.currentManager(slider);</p>            <p> rm.setDoubleBufferingEnabled(false);</p>            <p> cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS));<br>              cp.add(slider);<br>              cp.add(makeControlPanel());</p>            <p> slider.setEnabled(false);<br>              }<br>              private JPanel makeControlPanel() {<br>              JPanel controls = new JPanel(),<br>              checkBoxes = new JPanel();<br>              JCheckBox logCheckBox = new JCheckBox(&quot;Log&quot;),<br>              flashCheckBox = new JCheckBox(&quot;Flash&quot;);<br>              JButton repaintButton = new JButton(&quot;repaint&quot;);</p>            <p> final JSlider flashTimeSlider = <br>              new JSlider(JSlider.HORIZONTAL,0,250,100);</p>            <p> flashTimeSlider.setPaintTicks(true);<br>              flashTimeSlider.setMajorTickSpacing(10);<br>              flashTimeSlider.setMinorTickSpacing(5);</p>            <p> controls.setLayout(new BoxLayout(controls, <br>              BoxLayout.X_AXIS));<br>              checkBoxes.setLayout(new BoxLayout(checkBoxes, <br>              BoxLayout.Y_AXIS));</p>            <p> flashTimeSlider.setBorder(<br>              BorderFactory.createTitledBorder(&quot;Flash Time&quot;));<br>              controls.setBorder(<br>              BorderFactory.createTitledBorder(&quot;Controls&quot;));</p>            <p> checkBoxes.add(logCheckBox);<br>              checkBoxes.add(flashCheckBox);</p>            <p> controls.add(repaintButton);<br>              controls.add(flashTimeSlider);<br>              controls.add(checkBoxes);</p>            <p> repaintButton.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              int opts = 0;</p>            <p> if(logIsOn) opts |= DebugGraphics.LOG_OPTION;<br>              if(flashIsOn) opts |= DebugGraphics.FLASH_OPTION;</p>            <p> slider.setDebugGraphicsOptions(opts);<br>              repaint();<br>              }<br>              });</p>            <p> flashTimeSlider.addChangeListener(new ChangeListener() {<br>              public void stateChanged(ChangeEvent e) {<br>              DebugGraphics.setFlashTime(<br>              flashTimeSlider.getValue());<br>              }<br>              });</p>            <p> flashCheckBox.addItemListener(new ItemListener() {<br>              public void itemStateChanged(ItemEvent e) {<br>              AbstractButton b = (AbstractButton)e.getSource();</p>            <p> if(b.isSelected()) flashIsOn = true;<br>              else flashIsOn = false;<br>              }<br>              });<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -