2009-05-21 5 views
0

JScrollPaneの中にJTableがあります。私はテーブルの列のいずれかのカスタムセルエディタを作成しています。このエディタにスクロールしてJListをポップアップ表示させます。私はPopupを使ってJListを含む新しいJScrollPaneを表示することでこれを行いました。Swing:JScrollPaneからのポップアップの配置

Popupの位置を除いてすべて動作しています。エディタはこのように、基本的に見えるために私のカスタムコンポーネント:

public class CustomPanel extends JPanel { 
    JTextField text = new JTextField(); 
    JList list = new JList(); 
    JScrollPane scroll = new JScrollPane(list); 
    Component owner = null; 
    public CustomPanel(Component owner) { 
     this.owner = owner; 
     add(text); 
    } 
    public void showPopup() { 
     Popup p = PopupFactory.getPopup(owner, scroll, getX(), getY()+getHeight()); 
     p.show(); 
    } 
} 

何が起こっているがgetX()getY()がそれを保持するJScrollPaneにテーブルセルの位置を戻ってきている、とPopupは絶対画面位置を望むされていることです。私がownerJScrollPaneを渡しても、それは相対的なものではありません。 text.getX()/text.getY()を使用しても同じ問題が発生します。

PopupTextBoxのすぐ下に配置するにはどうすればよいですか?

ちょっとした背景:最終目標は、選択したすべての項目をコンマ区切りのリストとして表示する複数選択コンボボックスです。このようなものが既に存在する場合は、私にそれを指摘するのをためらってください。

編集:owner.getLocationOnScreen().y + getY()は、スクロールペインがどこにあっても全部スクロールしても機能しません。しかし、ただ平らなgetLocationOnScreen().yが機能します。問題は解決しました、ありがとうございます。

答えて

関連する問題