jTabbedPaneに閉じるボタンを配置するために、このクラスをメインクラス内に配置します。問題は、たとえば、タブジャーナル、連絡先、アップロードという3つのタブを開いており、タブの連絡先が現在選択されているタブであることです。選択したタブではないジャーナルタブを閉じると、現在選択されているタブが閉じます。現在選択されているタブではなく、クリックされたタブを閉じます。JTabbedPane
class Tab extends javax.swing.JPanel implements java.awt.event.ActionListener{
@SuppressWarnings("LeakingThisInConstructor")
public Tab(String label){
super(new java.awt.BorderLayout());
((java.awt.BorderLayout)this.getLayout()).setHgap(5);
add(new javax.swing.JLabel(label), java.awt.BorderLayout.WEST);
ImageIcon img = new ImageIcon(getClass().getResource("/timsoftware/images/close.png"));
javax.swing.JButton closeTab = new javax.swing.JButton(img);
closeTab.addActionListener(this);
closeTab.setMargin(new java.awt.Insets(0,0,0,0));
closeTab.setBorder(null);
closeTab.setBorderPainted(false);
add(closeTab, java.awt.BorderLayout.EAST);
}
@Override
public void actionPerformed(ActionEvent e) {
closeTab(); //function which closes the tab
}
}
private void closeTab(){
menuTabbedPane.remove(menuTabbedPane.getSelectedComponent());
}
これは私がタブ呼び出すために何をすべきかです:あなたはジャーナルタブを削除したい場合は、合格する必要がある、あなたは常に選択したタブを削除します)getSelectedComponentを(除去することにより
menuTabbedPane.setTabComponentAt(menuTabbedPane.indexOfComponent(jvPanel), new Tab("contactPanel"));
...:次に、あなたは
actionPerformed()
方法であることを利用し、closeTab()
にコンポーネントを渡すことができますここではもう少し文脈ですより良いヘルプを早く得るには、sscce](http://www.sscce.org)を含めてください。 – user1329572
*現在選択されている* *を削除したようです。閉じようとしているタブのインデックスを知る必要があります。 –
どうすればいいですか?申し訳ありません。タブクラスにゲッター/セッターを作成する必要がありますか? – John