【发布时间】:2012-02-29 16:56:57
【问题描述】:
我迷路了:我有 JFrame,在 JFrame 中是 JTabbedPane 而在 JTabbedPane 中有 4 个 JPanel (标签)。在每个 JPanel(选项卡)上是 JScrollPane 和 JTable(总共:4 个 JTable's)。每个 JTable 我在启动应用程序时都使用来自 DB 的数据进行填充 - 完美运行。
现在我想在单击 JTabbedPane(选项卡)时为每个 JTable 填充数据。我正在尝试:"public class MyTest1Tab extends JPanel implements FocusListener" 在构造函数中使用"this.addFocusListener(this);",并且我已经实现了focusGained(FocusEvent e) and focusLost(FocusEvent e) 方法。但我觉得,这个解决方案是不正确的。
从我的角度来看,我需要一些东西,比如监听 JTabbedPane 上的标签点击或显示 JTable 时触发的某些事件。
有人知道我如何监听特定的 JTable 显示吗?
【问题讨论】:
-
您正在标签式窗格中寻找 ChangeListener
-
谢谢,用这个监听器做一些例子。有一个小问题:它应该返回选项卡名称或索引。标签名称不好(应用程序是多语言的)。当我将依赖标签索引时,它可以改变吗? - 例如,当我将按钮添加到选项卡,然后从四个选项卡中关闭第二个选项卡,然后我将这个选项卡添加回来(从菜单),选项卡将是最后一个。索引会改变吗?
-
好的,经过一些详细的最终 (?) 决定:选项卡的顺序基于应用程序启动顺序 - “jTabbedPane.addTab("Test tab 1", null, panelTest1, null)" 的顺序应用程序 gui 初始化。即使选项卡关闭然后在应用程序生命周期中重新打开,这也不会改变。因此,如果选项卡位于位置 0,然后关闭,然后以编程方式在位置 4 重新打开,则索引仍为 0。