扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共7页)
注:查看ButtonModel源代码我们可以看到它是一个接口,定义了一组方法:
public interface ButtonModel extends ItemSelectable {
boolean isArmed();
boolean isPressed();
…
boolean isRollover();
void addActionListener(ActionListener l);
void removeActionListener(ActionListener l);
void addItemListener(ItemListener l);
…
void removeChangeListener(ChangeListener l);
其实看到这里,如果你再回头看下这个例子刚开始时“Model的设计”以及前面的内容,就会明白什么是“Mod封装的是数据源和所有基于对这些数据的操作。在一个组件中,Model往往表示组件的状态和操作这些状态的方法,往往是一系列的公开方法。通过这些公开方法,便可以取得模型端的所有功能”
我们再来看看AbstractButton的源代码:
1. public abstract class implements ItemSelectable, SwingConstants { AbstractButton extends JComponent
2. protected ButtonModel model= null;
3. protected ChangeListener changeListener = null;
4. protected ActionListener actionListener = null;
5. protected ItemListener itemListener = null;
6. protected transient ChangeEvent changeEvent;
7. public boolean isSelected() {
8. return model.isSelected();
9. }
10.public void doClick() {
11.doClick(68);
12. }
13.public void doClick(int pressTime) {
14. Dimension size = getSize();
15.model.setArmed(true);
16. model.setPressed(true);
17. paintImmediately(new Rectangle(0,0, size.width, size.height));
18.try {
19.Thread.currentThread().sleep(pressTime);
20. } catch(InterruptedException ie) {
21.}
22.model.setPressed(false);
23.model.setArmed(false);
24.}
25.//其它代码
26.}
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者