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