系统:Win10
JDK:1.8.0_333
IDEA:2020.3.4
在写一个 Swing 项目的时候,写到 JTabbedPane 时,需要实现点击最右边的+选项卡,新建一个新的选项卡功能,类似于浏览器的点击+新建标签页的功能
public class JTabbedPaneAdd {
public static int sequence = 1; // 序号
public static void main(String[] args) {
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("对象", new JPanel());
tabbedPane.addTab("+", new JPanel());
// 添加监听
tabbedPane.getModel().addChangeListener(new ChangeListener() {
private boolean ignore = false; // 防止切换新选项卡引起的死循环
@Override
public void stateChanged(ChangeEvent e) {
if (!ignore) {
ignore = true;
try {
int selected = tabbedPane.getSelectedIndex();
String title = tabbedPane.getTitleAt(selected);
if ("+".equals(title)) {
JPanel panel = new JPanel();
String newTitle = "选项卡@" + sequence;
sequence++;
tabbedPane.insertTab(newTitle, null, panel, null,
tabbedPane.getTabCount() - 1);
tabbedPane.setSelectedComponent(panel);
}
} finally {
ignore = false;
}
}
}
});
JFrame frame = new JFrame();
frame.setTitle("点击新增选项卡");
frame.setSize(600, 480); // 设置大小
frame.add(tabbedPane); // 添加组件
frame.setLocationRelativeTo(null); // 居中
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭默认操作
frame.setVisible(true); // 设置可见
}
}
