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