0

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

4

3 回答 3

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表中的操作的操作。

于 2010-05-07T14:35:14.863 回答
1

只需在主窗口上调用一个方法来执行操作

于 2010-05-07T14:25:29.430 回答
1

有几种方法可以处理这个问题:

1)您可以让自定义表类在其上具有自定义侦听器(观察者模式),然后在单击发生时调用该侦听器

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

3)您可以让主窗口注册为表的侦听器(即鼠标侦听器)并让它处理事件。

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

祝你好运。

于 2010-05-07T14:28:25.267 回答