【问题标题】:How can I generate a new panel based on where my JTable is double-clicked?如何根据双击 JTable 的位置生成新面板?
【发布时间】:2011-01-01 15:36:16
【问题描述】:

我需要帮助来实现以下行为:当用户双击 JPanel 上的 JTable 中的一行时 - 代码 sn-p 如下所示 - 程序应将用户重定向到 JPanel B. B 应该包含一些关于 JTable 行上的任何内容的数据。

private void TableMouseClicked(java.awt.event.MouseEvent evt) {
if(evt.getClickCount() == 2){
   System.out.println("Double click");
}
}

【问题讨论】:

    标签: java swing action jpanel double-click


    【解决方案1】:

    “将用户重定向到”是什么意思?

    如果另一个面板已经可见,您可以在第二个面板上使用setFocus() 切换焦点(尽管这是一种不寻常的行为,可能会给您的用户带来负面影响)。

    如果另一个面板不可见,但在 GUI 中有自己的空间,那么我想您只需让它可见。如果它必须覆盖用户刚刚单击的面板,那么您需要使用CardLayout 在同一空间中交替显示两个面板。

    【讨论】:

    • 我的意思是双击一行(在位于 JTabbedPane 的一个选项卡中的 jTable 中)将自动关注它在同一个 JTabbedPane 的不同选项卡中的任何内容:)
    • 啊,好的。然后你需要在你的双击处理程序中实现两件事:(1) 将 JTabbedPane 翻转到你想要的那个,(2) setFocus() 在你想要的元素上。如果那是另一个 JTable,您需要在 JTable 上设置焦点(),并在 JTable 的 SelectionModel 中另外设置选择。
    • 当然!您可以使用JTabbedPane.setSelectedComponent()setSelectedIndex()
    【解决方案2】:

    查看此主题:http://forums.sun.com/thread.jspa?threadID=366670
    这基本上与您尝试做的事情相同,您只想响应鼠标双击而不是鼠标移动事件。

    【讨论】:

      猜你喜欢
      • 2015-01-24
      • 2013-10-11
      • 2015-02-09
      • 2020-02-14
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多