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 に対するポイント (座標) を取得しています。ユーザーがセル内のどこかをクリックし、返された Point が X=272 および Y=50 であるとします。だから今、私はそれらの座標で正確に JDialog を配置したいと思います。私は試した:

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

ただし、これによりダイアログが別の場所に配置されます(テーブルではなく画面の座標)。セルに対して JDialog を配置する方法について誰か提案がありますか?

4

2 に答える 2

0

一般に、ユーザーはマウスまたはキーボードでアプリケーションを使用できる必要があります。ユーザーがそのセルにタブ移動するとどうなりますか? 同じダイアログが表示されないようにする必要がありますか? したがって、マウスを使用するかどうかに関係なく機能するより一般的なソリューションについては、次のようにします。

SwingUtilities.convertPointToScreen(point, table);

今後の参考のために、SwingUtilities の他の convertXXX メソッドを確認してください。

または、いつでも使用できます。

Component.getLocationOnScreen();

次に、マウスポイントを追加します。

于 2013-04-27T16:07:35.920 に答える