如何使主窗口对表单击做出反应

时间:2010-05-07 14:19:47

标签: java swing jtable jpopupmenu

我是Java swing的新用户。当用户点击该行时,我需要能够创建一个包含行信息的弹出窗口。我设法在我的表类中加入mouseClick事件反应,并且我有行信息可用。如何通知主窗口有关事件的信息,以便显示对话框/弹出框?

3 个答案:

答案 0 :(得分:1)

只需在主窗口上调用方法即可执行操作

答案 1 :(得分:1)

有几种方法可以解决这个问题:

1)您可以让自定义表类上有一个自定义侦听器(Observer Pattern),然后在发生单击时调用它

2)你可以让表调用主窗口上的方法 - 即作为表格构造的一部分传入主窗口

3)您可以将主窗口寄存器作为表的监听器(即鼠标监听器)并让它处理事件。

我确信还有其他人。这些是我见过最常用的。根据所编写软件的大小,范围和意图,每个软件都有其优点和缺点。这是一个学校项目,是为了解Swing而写的玩具,还是设计成一个更长期,更大的项目?如果是后者,我建议查看模型视图控制器(MVC)架构讨论,因为从长远来看,根据我的经验,可以更轻松地维护代码。

祝你好运。

答案 2 :(得分:1)

你可以这样做:

myTable.addMouseListener(new MouseAdapter() {
        public void mouseReleased(MouseEvent e) {
            if(SwingUtilities.isRightMouseButton(e)) {
                int index = myTable.rowAtPoint(e.getPoint());
                JPopupMenu popup = new JPopupMenu();
                popup.add(myMenuAction);
                popup.show(e.getComponent(), e.getX(), e.getY());
            }
        }
});

然后实施一个操作myMenuAction,您可以使用表格中的index