swing入门教程(三) 附加的swing小部件(上)

  ——在这一节中,我将介绍 Swing 库中的其他全部组件、如何使用它们、它们看起来是什么样的,等等,这部分内容应当让您更好地了解 Swing 为 UI 开发人员提供了什么。


JComboBox

我们从 JComboBox 开始介绍。组合框与下拉选择相似,区别在于使用组合框时用户可以不从列表中选择项目,还可以选择一个(而且只有一个)项目。在某些版本的组合框中,还可以输入自己的选择。浏览器的地址栏就是一个示例:它是一个允许输入自己选项的组合框。以下是 JComboBox 在 Swing 中看起来的样子:

JComboBox

JComboBox 的重要函数包括 JComboBox 包含的数据。需要有一种方法来设置 JComboBox 中的数据、修改数据、在用户选择时得到用户的选择。可以使用以下 JComboBox 方法:

  • addItem()添加一个项目到 JComboBox.
  • get/setSelectedIndex()获取/设置 JComboBox 中选中项目的索引。
  • get/setSelectedItem()获取/设置选中的对象。
  • removeAllItems()从 JComboBox 删除所有对象。
  • remoteItem()从 JComboBox 删除特定对象。

JTextField

JTextField 的一个细微变化是 JPasswordField,它允许您隐藏在文本字段区域中显示的字符。毕竟,在您输入口令的时候,如果每个人都能看到,那可没什么好处?可能根本就不好,而且在私人数据如此脆弱的今天,您需要所有能够得到的帮助。以下是 JPasswordField 在 Swing 中看起来的样子:

JPasswordField

JPasswordField 上额外的“安全性”方法对 JTextField 的行为做了轻微改变,所以不能阅读文本:

  • get/setEchoChar()获取/设置每次字符输入时在 JPasswordField 中显示的字符。在获取口令时,不会返回“回声”,而是返回实际的字符。

  • getText() 不应当 使用这个函数,因为它会带来可能的安全问题(String 会保存在内存中,可能的堆栈转储会暴露口令)。

  • getPassword()这是从 JPasswordField 中获得口令的恰当方法,因为它返回一个包含口令的 char[]。为了保证恰当的安全性,数组应当被清为 0,以确保它不会保留在内存中。

JCheckBox/JRadioButton

JCheckBox 和 JRadioButton 组件向用户呈现选项,通常采用多选的格式。区别是什么?从实践的角度来说,它们没有那么不同。它们的行为方式相同。但是,在一般的 UI 实践中,它们有细微差异:JRadioButton 通常组合在一起,向用户呈现带有必选答案的问题,而且这些答案具有强制性(这意味着问题只能有一个答案)。JRadioButton 的行为保证了这个用法。一旦选择了JRadioButton,就不能取消对它的选择,除非选择了在同一组中的另外一个单选钮。从效果上看,这就保证了选项的惟一和必选。JCheckBox 的不同在于,允许随机地选择/取消除选择,并允许为问题选择多个答案。

这里是个示例。问题“您是男孩还是女孩!”有两个惟一答案选项“男孩”或“女孩”。用户必须选择一个,不能同时选中。另一方面,问题“您的习惯是什么?”的答案有“跑步”、“睡觉”或“阅读”,不应当只允许为此问题选择一个答案,因为人们可能有不止一个习惯。

把这些 JCheckBoxe 或 JRadioButton 捆绑成一组的类是 ButtonGroup 类。它允许把选项组织在一起(例如“男孩”和“女孩”),这样,其中一个被选择时,另外一个就自动取消选择。

以下是 JCheckBox 和 JRadioButton 在 Swing 中看起来的样子:

JCheckBox 和 JRadioButton

需要记住的重要的 ButtonGroup 方法是:

  • add()添加 JCheckBox 或 JRadioButton 到 ButtonGroup。
  • getElements()获得 ButtonGroup 中的全部组件,允许对它们进行迭代,找到其中选中的那个。


JMenu/JMenuItem/JMenuBar

JMenu、JMenuItem 和 JMenuBar 组件是在 JFrame 中开发菜单系统的主要构造块。任何菜单系统的基础都是 JMenuBar。它平淡而乏味,但却是必需的,因为每个 JMenu 和 JMenuItem 都要用它构建。要用 setJMenuBar() 方法把 JMenuBar 附着到 JFrame。一旦将它附加到 JFrame 中,就可以添加所有想要的菜单、子菜单和菜单项。

JMenu/JMenuItem 的区别看起来可能很明显,但实际上,在幕后看起来并不像表面那样。看看类的类层次结构,就知道JMenuJMenuItem 的子类。但是,在表面上,它们是有区别的:用 JMenu 包含其他 JMenuItem 和 JMenu;JMenuItem 在选中时触发操作。

JMenuItem 也支持快捷键的概念。与您用过的大多数应用程序一样,Swing 应用程序允许您按下 Ctrl+(某个键)来触发一个操作,就像选中菜单键本身一样。想想用来剪切和粘贴的快捷键 Ctrl+X 和 Ctrl+V。

除此之外,JMenu 和 JMenuItem 都支持访问键。用 Alt 键与某个字母关联,模拟菜单本身的选择(例如,在 Windows 中按下 Alt+F,然后按下 Alt+x 就可以关闭应用程序)。

以下是包含 JMenu 和 JMenuItem 的 JMenuBar 在 Swing 中的样子:

JMenuBar、JMenu 和 JMenuItem


这些类需要的重要方法是:

  • JMenuItem and JMenu:
    • get/setAccelerator()获取/设置用作快捷键的 Ctrl+键。
    • get/setText()获取/设置菜单的文本。
    • get/setIcon()获取/设置菜单使用的图片。


  • JMenu 专用:
    • add()添加另外一个 JMenu 或 JMenuItem 到 JMenu(创建嵌套菜单)。


JSlider

在应用程序中 JSlider 支持数值变化。它是一种迅速而简单的方式,不仅能让用户以可视形式获得他们当前选择的反馈,还能得到可以接受的值的范围。想像一下这种情况:可以提供一个文本字段,允许用户输入值,但是这样做就带来了额外的麻烦,要确保输入的值是数字,还要确保数字符合要求的数值范围。例如,如果有一个金融 Web 站点,它向您提问要在股票上投资的百分比,那么您不得不检查在文本字段中输入的值,以确保它们是数字,而且在 0 到 100 之间。如果换用 JSlider,那么就可以确保选择的是指定范围内的数字。

在 Swing 中,JSlider 看起来如下所示:

JSlider

JSlider 中的重要方法是:

  • get/setMinimum()获取/设置可以选择的最小值。
  • get/setMaximum()获取/设置可以选择的最大值。
  • get/setOrientation()获取/设置 JSlider 是上/下还是左/右滚动条。
  • get/setValue()获取/设置 JSlider 的初始值。


JSpinner

与 JSlider 非常像,可以用 JSpinner 允许用户选择一个整数值。JSlider 的一个主要优势就是比 JSlider 的空间紧凑。但是,它的不足就是无法方便地设置其边界。

但是,两个组件之间的比较仅此而已。JSpinner 更加灵活,可以用来在任意组的值之间进行选择。除了在数字间选择,它还可以用来在日期、名称、颜色和任何事之间进行选择。这使 JSpinner 极为强大,允许您提供其中只包含预定义的选择的组件。使用这种方式,它与 JComboBox 类似,但是它们的应用不能互换。只应把 JSpinner 用在逻辑上连续的选择 —— 数字和日期是最合逻辑的选择。而另一方面,在呈现看起来随机的选择并且选择之间没有连接的时候,JComboBox 是更好的选择。

JSpinner 看起来如下所示:

JSpinner

重要方法是:

  • get/setValue()获取/设置 JSpinner 的初始值,在基本实例中,需要是整数。
  • getNextValue()获取按下上箭头按钮之后应当选中的下一个值。
  • getPreviousValue()获取按下下箭头按钮之后应当选中的前一个值。


JToolBar

JToolBar 充当其他组件(JButton、JComboBoxe 等)的调色板,共同构成您在大多数应用程序中熟悉的工具栏。工具栏允许程序把常用的命令放在可以迅速发现的位置,并把它们以常用命令组的形式组合在一起。一般(但不总是这样)情况下,工具栏按钮在菜单栏中会有对应的命令。虽然这不是必需的,但已经变成了一种公共实践,您也应当试着这么做。

JToolBar 也提供了您在其他工具栏中看到过的其他功能:“浮动”的能力(也就是成为主帧顶部独立的帧)。

下图显示了一个非浮动 JToolBar:

非浮动 JToolBar

对于 JToolBar,要记住的重要方法是:is/setFloatable(),它获取/设置 JToolBar 是否可以浮动。

JToolTip

您可能到处都看到过 JToolTip,但是从来不知道它们叫什么。它们就像您鞋带上的塑料部件 —— 到处都有,但是您就是不知道它们正确的名字(如果您想知道,那么可以叫它们 金属箍)。JToolTip 就是您将鼠标停留在某个东西上面的时候弹出来的小“泡泡”。它们在应用程序中可能非常有用,可以为难用的项目提供帮助、扩展信息,甚至在拥挤的 UI 中显示某个项目的完整文本。在 Swing 中,可以通过把鼠标放在某个组件上的特定时间来触发它们;它们通常在鼠标处于不活动状态大约 1 秒钟之后显示。只要鼠标还停留在那个组件上,它们就保持可见。

JToolTip 的重要部分是它的易用性。setToolTip() 方法是 JComponent 类中的一个方法,这意味着每个 Swing 组件都能有一个与之关联的工具提示。虽然 JToolTip 本身也是一个 Swing 类,但目前,对于您的需要,它确实没有提供更多功能,而且本身也不该被创建。可以通过调用 JComponent 的 setToolTip() 函数访问和使用它。


  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值