Firefox «Открыть новую вкладку» на JTabbedPane - PullRequest
2 голосов
/ 20 марта 2012

Я хочу добавить кнопку в строку заголовка JTabbedPane (аналогично кнопке «открыть новую вкладку» («+») в Firefox) Я попытался добавить к стеклянной панели контейнера JTabbedPane. но так как моя вкладка содержит внутри JPanel, кажется, это не работает для меня. Любое предложение будет большой помощью для меня. Спасибо.

1 Ответ

6 голосов
/ 15 июня 2012

Вместо добавления кнопки я попробовал ее по-другому и работал для меня ... Я добавил JLabel (с '+') в качестве скрытой вкладки, и когда пользователь попытается выбрать эту вкладку, я будудобавление новой вкладки.

public class AddTabButtonDemo extends JFrame{

private JTabbedPane tabbedPane = new JTabbedPane();

public AddTabButtonDemo() {
    JLabel tab1Label = new JLabel("tab1");
    JPanel tab1 = new JPanel();
    tab1.add(tab1Label);
    tabbedPane.addTab("tab1", tab1);
    tabbedPane.addTab("+", new JLabel());
    tabbedPane.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if (tabbedPane.getSelectedComponent() instanceof JLabel) {
                int count = tabbedPane.getTabCount();
                JLabel newTabLabel = new JLabel("tab" + count);
                JPanel newTab = new JPanel();
                newTab.add(newTabLabel);
                tabbedPane.add(newTab, count - 1);
                tabbedPane.setTitleAt(count - 1, "tab" + count);
                tabbedPane.setSelectedComponent(newTab);
            }
        }
    });
    this.add(tabbedPane, BorderLayout.CENTER);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.pack();
    this.setMinimumSize(new Dimension(300, 300));
    this.setVisible(true);

}

public static void main(String[] args) {
    new AddTabButtonDemo();
}

}
...