1

这是我的代码:

    JTable1.addMouseListener(new MouseAdapter() {
                      public void mouseReleased(MouseEvent e) {
                          if (e.getButton() == MouseEvent.BUTTON1)
                          {
                              JTable target = (JTable)e.getSource();
                              Point pMouse = new Point();
                              pMouse = target.getMousePosition();
                          }
                    }
               }

所以我正在检索相对于 JTable 的点(坐标)。因此,假设用户单击单元格中的某个位置,返回的点是 X=272 和 Y=50。所以现在我想通过这些坐标精确定位一个 JDialog。我试过了:

jDialog1.setLocation(pMouse);
jDialog1.setVisible(true);

但这会将对话框定位在其他位置(屏幕坐标而不是表格)。有人对我如何相对于单元格定位 JDialog 有建议吗?

4

2 回答 2

3

您正在使用与内容的客户区相关的坐标JTable。您想要相对于整个窗口的全局坐标。为此,您可以使用:

Point location = MouseInfo.getPointerInfo().getLocation();
jDialog1.setLocation(location);
于 2013-04-27T15:07:14.770 回答
0

通常,用户应该能够通过鼠标或键盘使用您的应用程序。如果用户点击该单元格会发生什么?他们应该看不到同一个对话框吗?因此,对于更通用的解决方案,无论您是否使用鼠标都可以:

SwingUtilities.convertPointToScreen(point, table);

查看 SwingUtilities 中的其他 convertXXX 方法以供将来参考。

或者,您可以随时使用:

Component.getLocationOnScreen();

然后添加鼠标点。

于 2013-04-27T16:07:35.920 回答