簡體   English   中英

JDialog相對於JTable的鼠標位置

[英]Mouse position of JDialog relative to JTable

這是我的代碼:

    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的點(坐標)。 因此,假設用戶單擊單元格中的某個位置,返回的Point為X = 272,Y = 50。 所以現在我想用這些坐標精確定位JDialog。 我試過了:

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

但這會將Dialog定位在其他位置(屏幕的坐標而不是表格)。 有人建議如何將JDialog相對於單元格定位?

您正在使用與JTable內容的客戶區相關的坐標。 您需要與整個窗口相關的全局坐標。 為此您可以使用:

Point location = MouseInfo.getPointerInfo().getLocation();
jDialog1.setLocation(location);

通常,用戶應該能夠通過鼠標或鍵盤使用您的應用程序。 如果用戶選中該單元格會發生什么? 他們應該不能看到相同的對話嗎? 因此,無論您是否使用鼠標,都可以使用更通用的解決方案:

SwingUtilities.convertPointToScreen(point, table);

查看SwingUtilities中的其他convertXXX方法以供將來參考。

或者,您可以隨時使用:

Component.getLocationOnScreen();

然后添加鼠標點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM