JTabbedPane
テキストファイルを表示するシンプルなものがあります。各タブには、右クリックで個々のタブを閉じることができるようにしたいのですが、この一見単純な動作を機能させることができませんJList
。JScrollPane
これが私がこれまでに試したことです:
ペインにリスナーを追加する
public class RightClickListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
remove(getComponentAt(e.getPoint()));
}
}
}
個々のタブへの追加
public class RightClickListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
remove((Component) e.getSource());
}
}
}
他のいくつかのバリエーションを試しましたが、何もうまくいかないようです。これらのコンポーネントが削除されていない理由を知っている人はいますか? 必要に応じて、追加の詳細情報を提供させていただきます。
更新詳細:
public void loadCode(String cFile, String cLine) {
Scanner scan = null;
try {
scan = new Scanner(new File(cFile));
} catch (FileNotFoundException e) { e.printStackTrace();}
DefaultListModel<String> model = new DefaultListModel<String>();
JList<String> list = new JList<String>(model);
while(scan.hasNext()) {
model.addElement(scan.nextLine());
}
JScrollPane newTab = new JScrollPane(list);
tp.add(cFile, newTab);
tp.addMouseListener(new RightClickListener());
}
public class RightClickListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
remove(indexAtLocation(e.getX(), e.getY()));
}
}
}