swing
Использование Swing для графических пользовательских интерфейсов
Поиск…
замечания
Выход из приложения при закрытии окна
Легко забыть закрыть приложение, когда окно закрыто. Не забудьте добавить следующую строку.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
Создание пустого окна (JFrame)
Создание JFrame
Создание окна очень просто. Вам просто нужно создать JFrame
.
JFrame frame = new JFrame();
Титрование окна
Вы можете указать вашему окну название. Вы можете это сделать, передав строку при создании JFrame
или вызов frame.setTitle(String title)
.
JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");
Настройка размера окна
Окно будет как можно меньше, когда оно будет создано. Чтобы сделать его больше, вы можете указать его размер явно:
frame.setSize(512, 256);
Или вы можете иметь размер кадра сам по размеру его содержимого с помощью метода pack()
.
frame.pack();
setSize()
и pack()
являются взаимоисключающими, поэтому используйте один или другой.
Что делать при закрытии окна
Обратите внимание, что приложение не будет завершено, когда окно будет закрыто. Вы можете выйти из приложения после закрытия окна, сообщив JFrame
об этом.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Кроме того, вы можете указать окну сделать что-то еще, когда оно закрыто.
WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action
Создание панели содержимого
Дополнительным шагом является создание панели содержимого для вашего окна. Это не нужно, но если вы хотите это сделать, создайте JPanel
и вызовите frame.setContentPane(Component component)
.
JPanel pane = new JPanel();
frame.setContentPane(pane);
Отображение окна
После его создания вы захотите создать свои компоненты, а затем показать окно. Отображение окна выполняется как таковое.
frame.setVisible(true);
пример
Для тех из вас, кто любит копировать и вставлять, вот пример кода.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
frame.setVisible(true); //Show the window
Добавление компонентов
Компонент - это своего рода элемент пользовательского интерфейса, такой как кнопка или текстовое поле.
Создание компонента
Создание компонентов почти идентично созданию окна. Однако вместо создания JFrame
вы создаете этот компонент. Например, чтобы создать JButton
, вы делаете следующее.
JButton button = new JButton();
Многие компоненты могут иметь параметры, переданные им при создании. Например, кнопке может быть предоставлен некоторый текст для отображения.
JButton button = new JButton("Super Amazing Button!");
Если вы не хотите создавать кнопку, список общих компонентов можно найти в другом примере на этой странице.
Параметры, которые могут быть переданы им, варьируются от компонента к компоненту. Хороший способ проверить, что они могут принять, - это посмотреть параметры в вашей среде IDE (если вы используете их). Ярлыки по умолчанию приведены ниже.
- IntelliJ IDEA - Windows / Linux:
CTRL + P
- IntelliJ IDEA - OS X / macOS:
CMD + P
- Eclipse:
CTRL + SHIFT + Space
- NetBeans:
CTRL + P
Отображение компонента
После того, как компонент был создан, вы обычно устанавливаете его параметры. После этого вы должны поместить его где-нибудь, например, на свой JFrame
, или на свою область содержимого, если вы создали его.
frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever
пример
Ниже приведен пример создания окна, настройки области содержимого и добавления к нему кнопки.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane
frame.setVisible(true); //Show the window
Настройка параметров для компонентов
Компоненты имеют различные параметры, которые могут быть установлены для них. Они варьируются от одного компонента к другому , так что это хороший способ , чтобы увидеть , какие параметры могут быть установлены для компонентов , чтобы начать печатать componentName.set
, и пусть автозаполнения вашей среды IDE (Если вы используете IDE) предложить методы. Ярлык по умолчанию во многих IDE, если он не отображается автоматически, - это CTRL + Space
.
Общие параметры, которые разделяются между всеми компонентами
Описание | метод |
---|---|
Устанавливает наименьший размер, который может быть у компонента (только если менеджер макета имеет честь для свойства minimumSize) | setMinimumSize(Dimension minimumSize) |
Устанавливает наибольший размер, который может быть у компонента (только если диспетчер макетов чтит свойство maximumSize) | setMaximumSize(Dimension maximumSize) |
Устанавливает предполагаемый размер компонента (только если менеджер макета чтит свойство preferredSize) | setPreferredSize(Dimension preferredSize) |
Показывает или скрывает компонент | setVisible(boolean aFlag) |
Устанавливает, должен ли компонент отвечать на ввод пользователя | setEnabled(boolean enabled) |
Устанавливает шрифт текста | setFont(Font font) |
Устанавливает текст всплывающей подсказки | setToolTipText(String text) |
Устанавливает фоновый цвет компонента | setBackground(Color bg) |
Устанавливает цвет переднего плана (цвет шрифта) компонента | setForeground(Color bg) |
Общие параметры в других компонентах
Общие компоненты | Описание | метод |
---|---|---|
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField | Устанавливает отображаемый текст | setText(String text) |
JProgressBar , JScrollBar , JSlider , JSpinner | Установите числовое значение между минимальными и максимальными значениями компонента | setValue(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Установите наименьшее возможное значение, которое может иметь свойство value | setMinimum(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Устанавливает наибольшее возможное значение, которое может иметь свойство value | setMaxmimum(int n) |
JCheckBox , JToggleBox | Установите, является ли значение истинным или ложным (например: если флажок установлен?) | setSelected(boolean b) |
Общие компоненты
Описание | Учебный класс |
---|---|
кнопка | JButton |
флажок | JCheckBox |
Выпадающее меню / Combo box | JComboBox |
этикетка | JLabel |
Список | JList |
Строка меню | JMenuBar |
Меню в строке меню | JMenu |
Элемент в меню | JMenuItem |
панель | JPanel |
Индикатор | JProgressBar |
Переключатель | JRadioButton |
Полоса прокрутки | JScrollBar |
ползунок | JSlider |
Spinner / Number picker | JSpinner |
Таблица | JTable |
дерево | JTree |
Текстовая область / Многострочное текстовое поле | JTextArea |
Текстовое поле | JTextField |
Панель инструментов | JToolBar |
Создание интерактивных пользовательских интерфейсов
Имея кнопку, все хорошо и хорошо, но в чем смысл, если щелкнуть его ничего не делает? ActionListener
s используется, чтобы сообщить вашей кнопке или другому компоненту что-то сделать, когда оно активировано.
Добавление ActionListener
s выполняется как таковое.
buttonA.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Code goes here...
System.out.println("You clicked the button!");
}
});
Или, если вы используете Java 8 или выше ...
buttonA.addActionListener(e -> {
//Code
System.out.println("You clicked the button!");
});
Пример (Java 8 и выше)
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);
JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
//Code goes here
System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);
frame.setVisible(true); //Show the window
Организация компоновки компонентов
Добавление компонентов один за другим приводит к сложному использованию пользовательского интерфейса, поскольку все компоненты находятся где-то . Компоненты упорядочены сверху вниз, каждый компонент в отдельной «строке».
Чтобы исправить это и предоставить разработчику возможность компоновки компонентов, Swing имеет LayoutManager
.
Эти LayoutManager более подробно рассматриваются в разделе «Введение в Менеджеры макетов», а также отдельные разделы Менеджера макетов: