Поиск…


замечания

Выход из приложения при закрытии окна

Легко забыть закрыть приложение, когда окно закрыто. Не забудьте добавить следующую строку.

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

Пример информации о параметрах просмотра в IntelliJ IDEA

Отображение компонента

После того, как компонент был создан, вы обычно устанавливаете его параметры. После этого вы должны поместить его где-нибудь, например, на свой 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 .

Автозаполнение в IntelliJ IDEA

Общие параметры, которые разделяются между всеми компонентами

Описание метод
Устанавливает наименьший размер, который может быть у компонента (только если менеджер макета имеет честь для свойства 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 более подробно рассматриваются в разделе «Введение в Менеджеры макетов», а также отдельные разделы Менеджера макетов:



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow