2011-12-05 17 views
1

コンポーネントの位置をウィンドウで設定する必要があります。 クリックされた別のコンポーネントの近くのGlassPaneにコンポーネントを描画する必要があります。クリックイベントを発生させるコンポーネントをいくつかのマネージャーに渡します。そこには塗りつぶす座標を取得する必要があります。Java。スイング。絶対位置

public void mouseClicked(MouseEvent e) { 
       ApplicationManager.getInstance().drawOnGlassPane((Component e.getSource()); 
      } 

public void drawOnGlassPane(final Component caller) { 

     mainFrame = (JFrame) SwingUtilities.getWindowAncestor(caller); 
     JPanel glassPane = (JPanel) mainFrame.getGlassPane(); 
     glassPane.setVisible(true); 

     Point where = caller.getLocationOnScreen(); 
     JButton btn = new JButton("on glass pane"); 
     btn.setBounds((int) where.getX(), (int) (where.getY() + caller.getHeight()), 50, 20); 
     glassPane.add(btn); 
    } 
} 

新しいコンポーネントが間違った場所に表示されます。どうすれば正しい場所を設定できますか?

+3

あなたはすべての単一のレイアウトマネージャを使用してみましたし、それらのどれもが、あなたがやりたいことができないことを決めたことがありますか? –

+0

さて、私は、(呼び出し元の現在の場所に応じて)別の場所に描画されたカスタムダイアログを持たなければなりません。他の独立したコンテナ内のコンポーネントの場所に接続された独自のコンテナにレイアウトできる適切なレイアウトマネージャについて考えることはできません。 –

答えて