Swing:对主JFrame执行操作

时间:2015-11-30 22:53:07

标签: java swing jframe

假设我在同一个应用程序中打开了各种JFrame。当用户将焦点更改为另一帧(如单击顶部的栏)时,是否有办法执行某些操作(如更新JTable)?

如果没有办法在关闭另一个JFrame时对一个JFrame执行操作?

1 个答案:

答案 0 :(得分:2)

请阅读:binding help pages explains,了解为何可以很好地改进您的计划设计

至于你的主要问题,

  

当用户将焦点更改为另一帧(例如点击顶部的栏)时,是否有办法执行某些操作(例如更新JTable)?

这是一个更普遍问题的具体例子:

  

如何通过另一个对象中发生的事件更改一个对象的状态

并且有几种可能的解决方案

  • 最简单的方法是让处理事件的代码引用第一个对象,这里是一个JFrame,并在触发事件时简单地调用一个方法。
  • 更好的方法是使用MVC(模型 - 视图 - 控制器)类型结构构建程序,并在事件代码(控制代码)中更改模型的状态。查看模型的侦听器(包括您要更改的JFrame)将会收到通知,并会根据模型更改其外观。

一些一般性建议:

  • 显示和交换一堆窗口对用户来说非常烦人。看看我上面的链接,寻找其他可能的选择。
  • 您可能希望避免让类扩展JFrame,因为这会强制您使用该代码创建JFrame。更好的是编写JPanel而不是JFrame,然后将JPanels创建在任何需要的位置,无论是在JFrame中,还是在另一个JPanel中,或通过CardLayout交换,还是在JTabbedPane,JDialog,JOptionPane中...