java2图形设计卷Ⅱ学习小结

上传人:cn****1 文档编号:464165786 上传时间:2023-08-31 格式:DOC 页数:43 大小:253KB
返回 下载 相关 举报
java2图形设计卷Ⅱ学习小结_第1页
第1页 / 共43页
java2图形设计卷Ⅱ学习小结_第2页
第2页 / 共43页
java2图形设计卷Ⅱ学习小结_第3页
第3页 / 共43页
java2图形设计卷Ⅱ学习小结_第4页
第4页 / 共43页
java2图形设计卷Ⅱ学习小结_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《java2图形设计卷Ⅱ学习小结》由会员分享,可在线阅读,更多相关《java2图形设计卷Ⅱ学习小结(43页珍藏版)》请在金锄头文库上搜索。

1、java 2 图形设计卷学习小结4.轻量事件通知由“模型”一节我们知道,模型能够提供轻量通知和状态通知两种通知。轻量通知使用一个只知道事件源的ChangeEvent(变化事件),状态通知则使用提供有关变化的更多信息的事件。变化事件由一些事件来处理,这些对象的类实现ChangeListener接口。接口总结3-1对ChangeListener接口进行了总结。接口总结3-1 ChangeListenerpublic abstract void stateChanged (ChageEvent)与大多数监听器一样,ChangeListener接口只定义了一个方法。StateChanged方法以Cha

2、ngeEvent的一个实例作为参数。类总结3-1中介绍了ChangeEvent类。类总结3-1 ChangeEvent扩展:java.util.EventObject构造方法public ChageEvent(Object source)ChangeEvent类仅提供了一个构造方法,没有提供其他方法。ChangeEvent构造方法以事件源作为参数。图3-9所示的小应用程序通过监控滑杆的值来说明轻量通知。一个变化监听器添加到这个小应用程序的滑杆中以获得滑杆值并更新这个小应用程序的状态区。图3-9轻量通知例3-2列出了图3-9所示的小应用程序的代码例3-2一个滑杆的轻量通知 import java

3、.awt.*;import javax.swing.*;import javax.swing.event.*;public class Test extends JAppletpublic void init()JSlider slider = new JSlider(0,100,50);getContentPane().add(slider,BorderLayout.CENTER);slider.addChangeListener(new ChangeListener()public void stateChanged(ChangeEvent e)JSlider s = (JSlider)

4、e.getSource();showStatus(Integer.toString(s.getValue();); 5.状态事件通知对不经常变化的模型属性,模型使用状态通知。状态通知激发所有类型的事件,并且提供比事件源更多信息(轻量事件通知仅提供事件源一种信息)。例如,当选取或取消选取一个单选按钮时,按钮模型将激发一个项事件。6.属性变化通知当模型的关联属性变化时(当一个属性的变化激发一个属性变化事件,则这个属性称作关联属性。)模型会以一个java.beans.PropertyChangeEvent的形式产生状态通知。属性变化通知由一些对象来处理,这些对象的类实现java.beans.Prop

5、ertyChangeListener接口,接口总结3-2中总结了这个接口。import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.beans.*;public class Test extends JFrame JTree tree = new JTree();public Test() Container contentPane = getContentPane();JScrollPane scrollPane = new JScrollPane(tree);c

6、ontentPane.add(new ControlPanel(), BorderLayout.NORTH);contentPane.add(scrollPane, BorderLayout.CENTER);tree.addPropertyChangeListener(new PropertyListener();class ControlPanel extends JPanel JCheckBox showRoot = new JCheckBox(show root node);public ControlPanel() showRoot.setSelected(tree.isRootVis

7、ible();setLayout(new FlowLayout();add(showRoot);showRoot.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) tree.setRootVisible(showRoot.isSelected(); );class PropertyListener implements PropertyChangeListener public void propertyChange(PropertyChangeEvent e) String na

8、me = e.getPropertyName();if(name.equals(JTree.ROOT_VISIBLE_PROPERTY) String msg = Root Visible Property: +e.getNewValue().toString();JOptionPane.showMessageDialog(Test.this, / parent compmsg, / message Property Change, / titleRMATION_MESSAGE);例4-7 不容透明Swing组件import javax.swing.*;import java.awt.*; p

9、ublic class OpaqueTest extends JApplet public void init() Container contentPane = getContentPane();RainPanel rainPanel = new RainPanel();ColoredPanel opaque = new ColoredPanel(),transparent = new ColoredPanel();/ JComponents are opaque by default, so the opaque/ property only needs to be set for tra

10、nsparenttransparent.setOpaque(false);rainPanel.add(opaque);rainPanel.add(transparent);contentPane.add(rainPanel, BorderLayout.CENTER);System.out.println(opaque.isOpaque();System.out.println(transparent.isOpaque();class RainPanel extends JPanel ImageIcon rain = new ImageIcon(this.getClass().getResour

11、ce(rain.gif);private int rainw = rain.getIconWidth();private int rainh = rain.getIconHeight();public void paintComponent(Graphics g) Dimension size = getSize();for(int row=0; row size.height; row += rainh)for(int col=0; col size.width; col += rainw)rain.paintIcon(this,g,col,row);class ColoredPanel e

12、xtends JPanel public void paintComponent(Graphics g) super.paintComponent(g);Dimension size = getSize();g.setColor(Color.black);g.drawRect(0,0,size.width-1,size.height-1);g.setColor(Color.red);g.fillRect(size.width/2-25,size.height/2-25,50,50);public Dimension getPreferredSize() return new Dimension

13、(100,100);4.3.7 立即绘制Swing组件例4-8 在事件处理方法中使用paintImmediately()import javax.swing.*;import java.awt.*;import java.awt.event.*; public class TestApplet extends JApplet public void init() Container contentPane = getContentPane();final JPanel panel = new JPanel();JButton button = new JButton(repaint);pane

14、l.setBackground(Color.blue);panel.setPreferredSize(new Dimension(100,100);contentPane.setLayout(new FlowLayout();contentPane.add(button);contentPane.add(panel);button.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) Color c = panel.getBackground();Dimension sz = panel.getSize();panel.setBackground(c = Color.blue ? Color.red : Color.blue);panel.paintImmediately(0,0,sz.w

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号