私は のJTable内部を持っていJScrollPaneます。テーブルの列の 1 つにカスタム セル エディターを作成しています。このエディターでスクロールをポップアップさせたいと考えていJListます。を含むPopup新しいを表示するためにa を使用してこれを行いました。JScrollPaneJList
の位置を除いて、すべてが機能してい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().yDOESは機能します。問題は解決しました、ありがとう。