我已經創建了一個swing應用程序,如下圖所示,在單擊與特定任務相關的按鈕時顯示選項卡中的主要任務。我爲每個選項卡添加了一個小關閉按鈕,當點擊與該選項卡相關的關閉按鈕時,我需要關閉該選項卡。如何從選項卡窗格中刪除選項卡
關閉按鈕是在其中延伸氟利昂JPanel類如波紋管類,
public class CloseTab extends JPanel {
JLabel title = new JLabel();
JButton closeButton = new JButton();
int tabIndex;
JTabbedPane tabbedPane = null;
public static int SELECTED_TAB_INDEX;
.
.
.
public static void setSELECTED_TAB_INDEX(int SELECTED_TAB_INDEX) {
CloseTab.SELECTED_TAB_INDEX = SELECTED_TAB_INDEX;
}
.
.
public void setCloseAction(ActionListener al) {
closeButton.addActionListener(al);
closeButton.setSize(10, 10);
closeButton.setBorder(new EmptyBorder(0, 0, 0, 0));
closeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/ofm/mnu/icons/delete.gif")));
}
public void setTabIndex(int index) {
this.tabIndex = index;
System.out.println(tabIndex);
}
public void init() {
add(title);
add(closeButton);
setOpaque(false);
setCloseAction(closeActoion);
}
ActionListener closeActoion = new ActionListener() {
public void actionPerformed(ActionEvent e) {
// System.out.println(tabIndex);
if(tabbedPane.getTabCount() != 0 && tabbedPane.getSelectedIndex() == SELECTED_TAB_INDEX){
tabbedPane.remove(SELECTED_TAB_INDEX);
}
}
};
}
,並在主幀I seted的SELECTED_TAB_INDEX變量作爲跟隨,
tbpWorkSpace.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JTabbedPane a = (JTabbedPane) e.getSource();
CloseTab pnl = new CloseTab();
pnl.setSELECTED_TAB_INDEX(a.getSelectedIndex());
}
});
但是,我無法得到我想要的結果,請告訴我有沒有其他方法可以實現我想要的結果。
究竟是什麼問題?只需將按鈕設置爲從tabbedPane中移除選項卡的按鈕即可...... – kleopatra 2012-01-17 10:33:22
看起來好像您在不同的選項卡式窗格實例中混合了一樣。 「stateChanged」方法中的變量「a」與「CloseTab」類中的「tabbedPane」變量相同嗎?如果是,那麼爲什麼不將changeListener添加到該tabbedPane? – 2012-01-17 10:52:33
> @Harry Joy--我想我已經走了一條漫長而錯誤的道路來完成我所需要的任務,看起來你的方法非常正確。非常感謝。 – Harsha 2012-01-17 10:59:23