java swing动态更新ui_使用 Swing 进行动态界面设计

使用 Swing 进行动态界面设计

通往 Swing API 外部领域的旅程

f9707805d5705e0249e7915e3ec13b87.png

Peter Seebach

2006 年 6 月 30 日发布

Swing 工具包提供各种用于创建用户界面的工具和几乎令人眼花缭乱的选项,这些选项用于在程序生存期间修改界面。小心地使用这些功能可以导致界面能够适应用户的需要并简化交互过程。粗心地使用同样的功能可以导致非常混乱或彻底不可用的程序。本文介绍动态 UI 的技术和体系,并提供有关构建有效的界面的帮助。您将修改随 Sun JDK 一起提供的基于 SwingSet2 示例应用程序的源代码(参见 参考资料);此应用程序的 UI 使用许多动态的特性并且可以作为理解它们的极好的起点。

禁用小部件

动态 UI 的最简单形式是使不可用的菜单项或按钮变灰的 UI。禁用 UI 小部件与禁用所有小部件的方法都是相同的。setEnabled() 函数是 Component 类的一个功能。清单 1 显示了禁用按钮的代码:

清单 1. 禁用按钮button.setEnabled(false);

即使像把不可用的菜单选项或对话框变灰这样简单的操作都涉及到是否方便用户使用的权衡。尽管变灰的按钮立即通知用户不能执行特定的操作,但它没有告知用户为什么。这对于不理解原因的用户可能是一个问题(参见 一般原则)。

正如您看到的,十分简单。关键问题是何时应该 启用或禁用一个按钮。通常的设计决策是当按钮不可用时禁用它。例如,当一个文件从上一次保存以来还没有被修改时,很多程序禁用 Save 按钮(以及任何相应的菜单项)。

关于禁用按钮的重要警告是要记住在适当的时候重新启用它们。例如,如果在单击按钮和按钮的动作完成之间有一个确认步骤,即使确认失败也应该重新启用按钮。

调整范围

有时,应用程序需要动态地调整数值小部件的范围,例如 Spinner 或者 Slider。这可能比它看起来要复杂许多。特别是 Slider 有二级功能 —— 刻度、刻度间隔和标签 —— 这些可能需要随着范围的调整而加以调整以避免灾难发生。

SwingSet2 示例没有进行任何一项调整,所以您需要通过把 ChangeListener 连接到一个可以修改其他滑块的滑块来修改它。输入新的 SliderChangeListener 类, 如清单 2 所示:

清单 2. 更改滑块的范围class SliderChangeListener implements ChangeListener {

JSlider h;

SliderChangeListener(JSlider h) {

this.h = h;

}

public void stateChanged(ChangeEvent e) {

JSlider js = (JSlider) e.getSource();

int i = js.getValue();

h.setMaximum(i);

h.repaint();

}

}

当创建第三个水平滑块时(最初示例中的滑块在每个单位处带有标记,在 5、10 和 11 等处带有标签), 另外还创建了一个新的 SliderChangeListener,它把滑块作为构造器参数传递。当创建第三个垂直的滑块(范围从 0 到 100)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值