`
bowld
  • 浏览: 13957 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

核心Swing组件(五)

 
阅读更多

  如图4-1所示,AbstractButton类是作用在幕后作为所用 的Swing按钮组件的一个重要Swing类。在本章稍后的JButton类中所描述的JButton是最简单的子类。其余的子类将会在后续的章节中进行描述。 
  所有的AbstractButton子类使用ButtonModel接口来存储数据模型。DefaultButtonModel类是所使用的默认实现。另外,我们可以将任意的AbstractButton对象组合为一个ButtonGroup。尽管这种组合对于JRadioButton与JRadioButtonMenuItem组件最为自然,然而任意的AbstractButton子类都会起作用。  表4-11列出了AbstractButton子类所共享的32个属性。这些属性可以使得我们自定义所有按钮的外观。  属性名 数据类型 访问性 
  action Action 读写绑定 
  actionCommand String 读写 
  actionListeners ActionListener[] 只读 
  borderPainted boolean 读写绑定 
  changeListeners ChangeListener[] 只读 
  contentAreaFilled boolean 读写绑定 
  disabledIcon Icon 读写绑定 
  disabledSelectedIcon Icon 读写绑定 
  disabledMnemonicIndex int 读写绑定 
  enabled boolean 只写 
  focusPainted boolean 读写绑定 
  horizontalAlignment int 读写绑定 
  horizontalTextPosition int 读写绑定 
  icon Icon 读写绑定 
  iconTextGap int 读写绑定 
  itemListeners ItemListener[] 只读 
  layout LayoutManager 只写 
  margin Insets 读写绑定 
  mnemonic char 读写绑定 
  mnemonic int 只写 
  model ButtonModel 读写绑定 
  multiClickThreshhold long 读写 
  pressedIcon Icon 读写绑定 
  rolloverEnabled boolean 读写绑定 
  rolloverIcon Icon 读写绑定 
  rolloverSelectedIcon Icon 读写绑定 
  selected boolean 读写 
  selectedIcon Icon 读写绑定 
  selectedObjects Object[] 只读 
  text String 读写绑定 
  UI ButtonUI 读写 
  verticalAlignment int 读写绑定 
  verticalTextPosition int 读写绑定 
  在这里值得一提的就是multiClickThreshhold。这个属性表示以毫秒计数的时间。如果一个按钮在这段时间间隔被鼠标多次选中,并不会产生额外的动作事件。默认情况下这个属性值为0,意味着每一次点击都会产生一个事件。为了避免在重要的对话框中偶然重复提交动作的发生,应将这个属性值设置0以上的合理值。 
  ButtonModel/Class DefaultButtonModel接口
  ButtonModel接口被用来描述AbstractButton组件的当前状态。另外,他描述了为所有不同的AbstractButton子类所支持的事件监听器对象的集合。其定义如下:  publicinterface ButtonModel extends ItemSelectable { // Propertiespublic String getActionCommand(); publicvoid setActionCommand(String newValue); publicboolean isArmed(); publicvoid setArmed(boolean newValue); publicboolean isEnabled(); publicvoid setEnabled(boolean newValue); publicvoid setGroup(ButtonGroup newValue); publicint getMnemonic(); publicvoid setMnemonic(int newValue); publicboolean isPressed(); publicvoid setPressed(boolean newValue); publicboolean isRollover(); publicvoid setRollover(boolean newValue); publicboolean isSelected(); publicvoid setSelected(boolean newValue); // Listenerspublicvoid addActionListener(ActionListener listener); publicvoid removeActionListener(ActionListener listener); publicvoid addChangeListener(ChangeListener listener); publicvoid removeChangeListener(ChangeListener listener); publicvoid addItemListener(ItemListener listener); publicvoid removeItemListener(ItemListener listener); }
  我们将要使用的特定的ButtonModel实现是DefaultButtonModel类,除非我们定义了自己的类。DefaultButtonModel类定义了不同的事件监听器的所有事件注册方法并且管理按钮状态并组织在ButtonGroup中。表4-12显示其9个属性。除了selectedObjects以外,他们均来自ButtonGroup接口,selectedObjects属性是DefaultButtonModel类的新成员,但是对于JToggleButton十分有用。在第5章中将会讨论ToggleButtonModel。 
  DefaultButtonModel属性  大多数情况下,我们并不直接访问ButtonModel。相反,使用ButtonModel的组件封装他们属性调用来更新模型属性。 
  理解AbstractButton热键
  热键是一种特殊的键盘快捷键,当按下时会使用一个特定的动作发生。在前的JLable类一节中讨论JLablel时,按下所显示的热键会使得相关联的组件获得输入焦点。在AbstractButton的情况下,按下按键的热键会使得按钮被选中。 
  热键的实际点击需要一个观感特定的热键的点击(这个键通常是Alt键)。所以,如果一个按钮的热键是B键,我们需要按下Alt-B来激活具有B热键的按钮。当按钮被激活时,所注册的监听器会被通知相应的状态变化。例如,对于JButton,所有的ActionListener对象都会被通知。 
  如果热键是按钮文本标签的一部分,我们会看到这个字符以下划线表示。这会由于当前的观感不同而有不同的显示。另外,如果热键并不是文本标签的一部分,对于特定的热键的选中并不有可见的指示符,除非观感在工具提示文本中进行显示。 
  图4-11显示了两个按钮:一个具有W热键,而另一个具有H热键。左边的按钮在其内容具有W的标签,所以第一个W会以下划线显示。第二个组件并没有由按钮上的这种行为获益,但是在Ocean观感中,如果工具提示文本进行了设置则会时行标识。 
  
  要为抽象按钮赋予一个热键,我们可以使用任意一个setMnemonic()方法。其中一个接受char参数,而另一个则接受int参数。就个人而言,我比较喜欢int版本,其参数值是KeyEvent类中众多VK_*常量的一个。我们也可以通过displayedMnemonicIndex属性来指定热键。  理解AbstractButton图标
  AbstractButton具有七个特定的图标属性。默认的图标是icon属性。这个属性用于所有的情况,除非指定了一个不同的图标或是组件提供了默认的行为。selectedIcon属性是按钮被选中时所使用的图标。pressedIcon是按钮被按下时所用的图标。使用这两种图标中的哪一种依赖于组件,因为JButton被按下但是并没有被选中,而JCheckBox被选中却没有被按下。 
  当按钮通过setEnabled(false)被禁止时要使用disabledIcon与disabledSelectedIcon属性。默认情况下,如果图标是一个ImageIcon,将会使用图标的一个灰度平衡版本。 
  其他的两个属性,rolloverIcon与rolloverSelectedIcon允许我们当鼠标划过按钮时(rolloverEnabled为true)显示不同的图标。 
  理解内部的AbstractButton位置
  horizontalAlignment, horizontalTextPosition, verticalAlignment与verticalTextPostion属性与JLabel类共享相同的设置与行为。表4-13列出这些属性。  尽管我们并不会直接创建一个AbstractButton实例,但是我们会创建其子类。所有子类共享一个共同的事件处理功能集合。我们可以向抽象按钮注册PropertyChangeListener,ActionListener,ItemListener以及ChangeListener对象。在这里将会讨论PropertyChangeListener对象,其余的对象将会在后续的章节中进行讨论。 
  与JComponent类类似,AbstractButton组件支持当类的实例的绑定属性变化时支持PropertyChangeListener对象注册的检测。与JComponent类不同的是,AbstractButton组件提供了下列的类常量集合来表示不同的属性变化: 
  
分享到:
评论

相关推荐

    Java2图形设计卷Ⅱ:Swing

    用大量图示分析了Swing组件的特点、结构及相互关系,使有经验的编程人员能高效利用Swing的强大功能。本书对掌握Swing技术提供了最全面的参考 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Swing JTable组件设置单元格合并

    Swing JTable组件设置单元格合并,内置Test测试类,核心API GridBagTable tasktable = new GridBagTable(model); tasktable.mergeCells(startRow, endRow, 0, 0);

    图书管理系统 就、Java+swing

    这个图书管理系统,主要是对图书和员工进行管理、维护,基本实现了借阅到规划图书的流程,采用swing组件,由纯Java语言编写而成,核心就是对数据库的增、删、改查

    基于Swing技术下的酒店客房信息管理系统源码+数据库+WORD毕业论文文档.zip

    系统基于JAVA的Application模式,使用Swing组件作为系统用户界面和MYSQL小型数据库管理系统实现。主要提供用户查询功能、住宿管理等功能,提供管理员客房、用户、系统信息的管理功能。 该系统遵循软件工程中的开发...

    Java坦克大战游戏,基于Spring Boot,JDK8,Swing组件开发,有一些Bug,还在持续更新完善中....zip

    学习笔记:整理了Java语言在游戏开发中的核心知识点和常用技术,方便你随时查阅和学习。 适用人群: 这份资源包适用于所有对Java游戏开发感兴趣的朋友,无论你是计算机专业的学生,还是希望业余时间尝试游戏开发的...

    jhexviewer:JHexViewer是基本的十六进制查看器Swing组件,可用于基于该组件创建更复杂的十六进制查看器

    这是什么JHexViewer是基本的十六进制查看器Swing组件,可用于基于它创建更复杂的十六进制查看器。 为了使它可定制且易于扩展,我们付出了很多努力,而不是强迫您使用固定的实现。 几乎所有内容都可以更改,例如内容...

    基于Swing技术下的酒店客房信息管理系统源码含文档.zip

    系统基于JAVA的Application模式,使用Swing组件作为系统用户界面和MYSQL小型数据库管理系统实现。主要提供用户查询功能、住宿管理等功能,提供管理员客房、用户、系统信息的管理功能。 该系统遵循软件工程中的开发...

    JavaSE核心编程

    掌握Java语言基础知识 理解面向对象的编程思想 运用Java编写命令行程序 运用JDBC编写数据库访问程序 运用Swing组件编写图形用户界面程序 运用Swing组件和JDBC实现C/S结构的应用程序

    java图书馆swing源码-swingexplorer:SwingExplorer工具的核心文件

    可视化浏览应用程序组件层次结构 监控 AWT/Swing 事件 调试 2D 图形 轻松找到源代码中负责创建特定 UI 的位置。 监控线程规则违规 下面显示了 Swing Explorer 如何检查基本的 Swing 应用程序。 有关 Swing Explorer ...

    Java核心技术 卷1

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、叙述方式深入浅出,并包含大量示例,从而帮助读者...

    Java核心技术 卷I + 卷II(第9版)(中文带目录)

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、叙述方式深入浅出,并包含大量示例,从而帮助读者...

    java 核心技术第九版卷一卷二 英文版

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、叙述方式深入浅出,并包含大量示例,从而帮助读者...

    JAVA核心技术第八版(上下卷)全部源码

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、叙述方式深入浅出,并包含大量示例,从而帮助读者...

    java核心技术卷一(英文版mobi格式)

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、叙述方式深入浅出,并包含大量示例,从而帮助读者...

    javaswing程序源码-java-book:《Java编程:综合入门》一书的源代码

    swing程序源码 Java 7 程序设计入门经典 《Java 7 程序设计入门经典》根据最新的 Java 7 撰写,全面系统地讲解了 Java 语言的语法和核心要素、利用 Swing 进行 GUI 编程以及 Java API 库三大方面的内容,包含大量...

    Java核心技术卷1(第九版)

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、叙述方式深入浅出,并包含大量示例,从而帮助读者...

    JAVA.2核心技术.卷I:基础知识(原书第7版).part1.rar

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、泛型程序设计、集合以及多线程等内容。 全书对Java...

    Java游戏之连连看小游戏实现+LW资源+开题+任务书+PPT+讲解视频

    连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,...本系统主要是运用Swing组件和事件处理技术,进行界面的绘制,鼠标的操作,以及积分的显示和沙漏的计时的显示等功能。

Global site tag (gtag.js) - Google Analytics