【问题标题】:jtable view eventjtable视图事件
【发布时间】:2012-02-29 16:56:57
【问题描述】:

我迷路了:我有 JFrame,在 JFrame 中是 JTabbedPane 而在 JTabbedPane 中有 4 个 JPanel (标签)。在每个 JPanel(选项卡)上是 JScrollPaneJTable(总共: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。

标签: java swing jtable


【解决方案1】:

我认为您应该使用 JTabbedPane 注册一个事件处理程序。它将为您提供选定的选项卡,然后您可以根据该选项卡填充特定于该 JTab 的 Jtable。

例如:

                    tabbedPane.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent arg0) {
            // TODO Auto-generated method stub
            if((((JTabbedPane)arg0.getSource()).getSelectedIndex())==0)
                            {
                                 //Load Jtable associated with first JTab
                            }

        }
    });

【讨论】:

  • 当然,经过一番阐述,我检查了如果我在 jtabbedpane 上有 4 个选项卡,然后以编程方式关闭并重新打开选项卡,索引将是相同的,如果位置改变也没关系。索引基于应用程序首次 gui 启动,不会改变。所以每个 jpanel 都会知道它的索引,并且在主应用程序类中应该是公共静态变量,所以应用程序知道实际打开的选项卡。每个 jpanel 都会检查这个属性,以便决定是否重新加载数据。
【解决方案2】:

Now I would like populate data for each JTable at the moment when I click on JTabbedPane (tab).

不要这样做,因为 Swing GUI 在繁重而漫长的任务结束之前会无响应或冻结,您必须将此任务重定向到后台任务,对于 Swing GUI,有两种方法

  • Runnable#Thread,请注意所有到 Swing GUI 的输出都必须包含在 invokeLater() 中,example

那么这种方式应该是 user_non_friendly,让我们用户从 JButton 更新 JTable 的内容

【讨论】:

  • 是的,我现在这个,数据检索将在后台任务中,在与数据库交谈时会有模态 jdialog "请稍等,数据加载..."
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2013-11-07
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多