模拟火狐的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);                }            });    }}