我在下面创建了一个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);
}
}
};
}
在主框架中我选择了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());
}
});
但是,我无法得到我想要的结果请告诉我有没有其他方法可以实现我想要的结果。
答案 0 :(得分:6)
要删除制表符,请使用JTabbedPane的.remove(index)
方法。点击此处了解详情:How to Use Tabbed Panes
答案 1 :(得分:1)
Spreadsheet_Excel_Reader