Несколько кнопок J - PullRequest
       2

Несколько кнопок J

1 голос
/ 13 мая 2011

учитывая, что у меня есть кнопка, которая будет добавлена ​​на разные панели, могу ли я сказать, что создание экземпляра 1 JButton невозможно?

пример: добавлена ​​кнопка «Отмена» для выхода из приложения и добавления ее на вкладкуПанель с определенным количеством вкладок.

Могу ли я сделать

JButton btnCancel = новый JButton ("Отмена");

и в одной из JPanel для 1-й вкладкиJFrame tab1.add (btnCancel);

2-я вкладка tab2.add (btnCancel);

или я должен создать новый JButton для каждой панели вкладок?

Ответы [ 4 ]

2 голосов
/ 13 мая 2011

.. как сделать так, чтобы кнопка не открывала новую вкладку?

Использовать вложенный макет. Е.Г.

import java.awt.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;

class CancelTab {

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new BorderLayout(3,3));
                gui.setBorder(new TitledBorder("GUI"));
                JPanel controls = new JPanel(
                    new FlowLayout(FlowLayout.CENTER,5,5));
                controls.add(new JButton("Commit"));
                controls.add(new JButton("Cancel"));

                gui.add(controls,BorderLayout.SOUTH);

                JTabbedPane tabbedPane = new JTabbedPane();

                tabbedPane.addTab("Tab 1", new JLabel("Label 1"));
                tabbedPane.addTab("Tab 2", new JLabel("Label 2"));
                gui.add(tabbedPane, BorderLayout.CENTER);

                JOptionPane.showMessageDialog(null, gui);
            }
        });
    }
}

Снимок экрана

enter image description here

1 голос
/ 13 мая 2011

Решение jleedev является лучшим (1+), но если вам абсолютно необходимо добавить его в каждую JPanel, то вы можете либо создать AbstractAction, созданный с помощью текста кнопки, и создать новые JButtons с помощью того же самого AbstractAction, или вы может создать одну единственную ButtonModel, которая используется всеми JButton с одинаковым именем и действием.

1 голос
/ 13 мая 2011

Поместите его ниже панели вкладок.Таким образом, ваша иерархия будет выглядеть следующим образом:

  • JFrame
    • JTabbedPane
      • JPanel для вкладки 1
      • JPanel для вкладки 2 и т. Д.
    • J Отмена кнопки
0 голосов
/ 13 мая 2011

Если вы планируете, чтобы кнопки не имели функции, это будет работать.Но если вы планируете добавить какие-либо Слушатели к объектам, выполнять какие-либо задачи, тогда это не будет хорошим вариантом.Но это может сработать, если вы получите родительский контейнер кнопки при выполнении действия и выполните задачи соответственно.

Но в любом случае более эффективно и логично создавать новый JButton для каждого использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...