模拟火狐的JTabbedPane
来源:互联网 发布:c#书籍推荐知乎 编辑:程序博客网 时间:2024/05/01 11:53
import java.awt.*;import javax.swing.*;import javax.swing.event.*;public class TabbedPaneFrame extends JFrame{ private JTabbedPane tabbedPane = new JTabbedPane(); private boolean bChange = false; public TabbedPaneFrame() { tabbedPane.addTab("新标签页", null); tabbedPane.addTab("+", null); tabbedPane.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent event) { if (tabbedPane.getTitleAt(tabbedPane.getSelectedIndex()).equals("+") && ! bChange) { bChange = true; //必须要设置这个,否则会递归stateChange tabbedPane.insertTab("新标签页", null, null, null, tabbedPane.getSelectedIndex()); tabbedPane.setSelectedIndex(tabbedPane.getSelectedIndex() - 1); bChange = false; } } }); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); add(tabbedPane); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new TabbedPaneFrame(); frame.setSize(400, 300); frame.setVisible(true); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }); }}