Прошло много времени с тех пор, как я писал настольные приложения на Java в целом и на Swing в частности.
Однако возникла необходимость в небольшом графическом интерфейсе.
Я выбрал инструмент IntelliJ IDEA Community Edition версии 2016.1. Я занялся лепкой и, естественно, первое, с чем столкнулся — хотя со времен Borland Java Builder 2006 утекло много воды, создавать экранные интерфейсы проще не стало, скорее наоборот. И одной из причин выбора IDEA было именно наличие Swing-конструктора «из коробки», но как им сразу пользоваться совершенно непонятно — форма генерируется, класс создаётся, управляющие переменные создаются из дизайнер.
но и всё: при создании нашего класса форма не появляется, на экране появляется Перерыл интернет, информации примерно ноль.
Люди говорят: «Создайте это и вперед!» Хм… По итогам небольших мытарств на эту тему я решил опубликовать инструкцию, так как, учитывая мой прошлый опыт, мне было гораздо легче искать, чем новичку, впервые лепившему форму в Swing. .
Создание форм Swing GUI с использованием JetBrains IntelliJ IDEA 2016.1
Во-первых, для понимания процесса лучше начать с этого.Что нужно сделать, так это зайти в меню IDEA «Файл -> Настройки» — там «Редактор -> Дизайнер графического интерфейса» и поставить галочку «Создать GUI Into: в исходном коде Java».
(это немного поможет понять процесс на первом этапе - потом можно будет удалить обратно).
Далее откройте дерево исходного кода вашего проекта, щелкните правой кнопкой мыши любую папку или файл исходного кода Java и выберите «Создать -> Диалог» — введите имя класса для формы.
В результате мы фактически сгенерировали класс-потомок JDialog (который можно создавать и использовать) и форму для него.
Запускаем наш проект на исполнение и.
о ужас чудо! при компиляции IDEA добавляет дополнительный код в конец нашего файла.
Несложно догадаться, что вся наша форма Swing настроена с помощью автоматически сгенерированного метода $$$setupUI$$$.{ // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! $$$setupUI$$$(); } /** * Method generated by IntelliJ IDEA GUI Designer * >>> IMPORTANT!! <<< * DO NOT edit this method OR call it in your code! * * @noinspection ALL */ private void $$$setupUI$$$() { contentPane = new JPanel(); contentPane.setLayout(new com.intellij.uiDesigner.core.GridLayoutManager(2, 1, new Insets(10, 10, 10, 10), -1, -1)); .
} /** * @noinspection ALL */ public JComponent $$$getRootComponent$$$() { return contentPane; }
Помните настройку, которую мы установили в самом начале — «GUI Into: -> Исходный код Java».
Если не устанавливать, то этот метод просто появится прямо в файле _class_, минуя java-файл (декомпилируйте, если сомневаетесь - я так и сделал).
Соответственно, вы можете вернуть настройку «GUI Into:» в исходный вид, чтобы этот код (который в любом случае редактировать категорически не рекомендуется) не раздражал глаз.
Теперь, когда мы понимаем, как это работает, перейдем к созданию других форм – не обязательно диалогов.
Снова щелкните правой кнопкой мыши по папке или файлу исходного кода, выберите «Создать -> Форма GUI» — введите имя класса для формы.
Создается класс и форма для него.
Добавляем в форму несколько элементов управления.
В графическом дизайнере смотрим имя корневого элемента (обычно Panel1, если IDEA не задала имя, а такое случается, принудительно — я для наглядности назвал его rootPanel).
Перейдем к исходному коду нашего класса.
Так:
1. Добавьте наследование «расширяет JFrame» для нашего класса;
2. Добавьте конструктор класса со строками: setContentPane(panel1);
setVisible(true);
Окончательный код класса public class GUIFrame extends JFrame{
private JButton button1;
private JPanel rootPanel;
public GUIFrame() {
setContentPane(rootPanel);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GUIFrame();
}
}
Все.
Форма готова к использованию.
Остальное смотрите в многочисленных инструкциях по Swing.
P.S. Как вариант, можно не наследовать наш класс от JFrame, а создать конструктор вида: JFrame frame = new JFrame();
frame.setContentPane(panel1);
frame.setVisible(true);
Этот вариант тоже работает — возможно, кому-то он будет полезен.
Теги: #GUI Swing Designer IntelliJ IDEA #java
-
Ноутбук Sony Vaio Vpc-Ea 2S1E/B
19 Oct, 24 -
Засеките Себе 25 Минут!
19 Oct, 24 -
Нюансы При Работе С Миграциями Ef
19 Oct, 24 -
Заметки По Нлп (Часть 3)
19 Oct, 24