我迷路了:我有JFrame,JFrame中是JTabbedPane,JTabbedPane中是4个JPanel (选项卡)。每个JPanel(选项卡)上都有JScrollPane 和JTable(总共:4 个JTable)。我在启动应用程序时使用数据库中的数据填充每个JTable - 工作完美。
现在,我想在单击 JTabbedPane(选项卡)时为每个 JTable 填充数据。我正在尝试: "public class MyTest1Tab extends JPanel Implements FocusListener"
和 "this.addFocusListener(this);"
在构造函数中,我已经实现了 focusGained(FocusEvent e ) 和 focusLost(FocusEvent e)
方法。但我觉得这个解决方案并不正确。
从我的角度来看,我需要诸如监听 JTabbedPane 上的选项卡点击或显示 JTable 时触发的某些事件。
有人知道我如何监听显示的特定JTable吗?
最佳答案
现在我想在单击 JTabbedPane(选项卡)时填充每个 JTable 的数据。
不要这样做,因为 Swing GUI 将无响应或卡住,直到繁重且耗时的任务结束,您必须将此任务重定向到后台任务,对于 Swing GUI 有两种方法
- 使用SwingWorker , example
或
Runnable#Thread
,注意 Swing GUI 的所有输出都必须包装在 invokeLater() 内,example
那么这种方式应该是用户非友好的,让我们从 JButton 更新 JTable 的内容
关于java - jtable View 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9190237/