スイング:JScrollPaneの内からポップアップを配置します
-
23-08-2019 - |
質問
私はJTable
の内部JScrollPane
を持っています。私は、テーブルの列の1のためのカスタムセルエディタを作成しています、と私は、このエディタがスクロールJList
をポップアップ表示します。私はPopup
を含む新しいJScrollPane
を表示するJList
を使用してこれをやった。
すべてが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
絶対画面位置を望むことです。私は、彼らがに関連しているowner
JScrollPane
に渡したとしても、それは動作しません。私はtext.getX()
/ text.getY()
を使用する場合、私は同じ問題を取得します。
どのように私は直接Popup
以下の私TextBox
を配置することができますか?
ただ、もう少し背景:最終目標は、カンマで区切ったリストで選択した項目がすべて表示され、複数の選択コンボボックスです。このような何か他のものがすでに存在する場合、それに私を指すことを躊躇しないでください。
編集:スクロールペインはどこにでもあるが、すべての道を上にスクロールしたときにowner.getLocationOnScreen().y + getY()
が動作しません。しかし、単なるgetLocationOnScreen().y
は、作業を行います。問題の解決、ありがとうございます。
解決
あなたは<のhref = "http://java.sun.com/javase/6/docs/api/java/awt/Component.html#getLocationOnScreen()" のrel = "nofollowを絶対画面位置を照会することができますnoreferrer "> Component.getLocationOnScreen()
の。あなたが探しているものということですか?