1. Создаешь JFrame:
JFrame frame = new JFrame("My frame");
Запускаешь. Ничего.
2. Показываешь фрейм после создания:
JFrame frame = new JFrame("My frame");
frame.setVisible(true);
Запускаешь. В углу экрана появляется окно нулевого размера.
Закрываешь его, вручную останавливаешь программу.
3. Перед показом задаешь размеры фрейма:
JFrame frame = new JFrame("My frame");
frame.setSize(640, 480);
frame.setVisible(true);
Запускаешь, видишь в углу фрейм указанных тобой размеров.
Закрываешь его, вручную убиваешь программу.
4. Надоело вручную усыплять программу. Пользователю надо убивать ее при закрытии фрейма. Как бы это сделать?
Оказывается, для этого у фрейма есть метод.
JFrame frame = new JFrame("My frame");
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Запускаем, закрываем фрейм, программа сразу умирает.
5. Как бы разместить фрейм не в углу, а посередине?
Конечно, можно было бы рассчитать его координаты относительно экрана и центрировать. Но можно сделать проще: задать относительное положение перед показом. Тогда ничего считать не придется. Положение относительно ничего — это положение по центру.
JFrame frame = new JFrame("My frame");
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Запускаем, видим фрейм по центру экрана. Закрываем.
6. Пустой фрейм — это скучно. Хочу кнопку!
Нет проблем. Создаем кнопку JButton и добавляем ее на фрейм.
Интересно, куда она встанет?
JFrame frame = new JFrame("My frame");
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
JButton button = new JButton("Нажми меня!");
frame.add(button);
frame.setVisible(true);
Запускаем. Кнопка растеклась по всей площади фрейма. Ужас.
7. Почему так произошло? Дело в том, что компоненты Swing располагают компоненты согласно указаниям их менеджера раскладки (LayoutManager). Есть разные раскладки: потоком, коробкой, сеткой, корзиной… Это отдельная большая тема, которую можно подробнее изучить здесь:
https://www.tutorialspoint.com/swing/swing_layouts.htm
Я не буду использовать менеджер и просто отключу его у фрейма, чтобы вручную задать положение моей дорогой кнопки.
JFrame frame = new JFrame("My frame");
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
JButton button = new JButton("Нажми меня!");
button.setLocation(8, 8);
button.setSize(160, 40);
frame.add(button);
frame.setVisible(true);
Запускаем. Кнопочка расположилась около верхнего левого угла фрейма. Ее можно нажимать, но она ничего не делает.
8. Я хочу запрограммировать кнопку. Пусть она меняет надпись, когда я ее нажму.
Нет проблем! Чтобы кнопка реагировала на нажатие, необходимо добавить ей обработчик действия (action listener, буквально «слушатель действия»). Обработчик должен реализовать интерфейс ActionListener.
JFrame frame = new JFrame("My frame");
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
JButton button = new JButton("Нажми меня!");
button.setLocation(8, 8);
button.setSize(160, 40);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button.setText("Ты молодец.");
}
});
frame.add(button);
frame.setVisible(true);
Запускаем, нажимаем кнопку, радуемся.
———
Думаю, для начала хватит.
Java
Где можно найти краткое обучение по использованию JFrame? Чтобы просто приводился порядок поставления и функций.
в книге
Похожие вопросы
- KAFKA, в чем смысл ее использования на данном примере?
- Как создать окна обучения на Джаве в Андроид студио?
- Кто то проходил обучение на javarush.ru? Какие отзывы? Довольно дорогое обучение, но оно стоит ли?
- Как работает рекурсивная функция?
- Что значит в данной строке "?" (какую функцию выполняет, зачем он там), за ранее спасибо!
- Как влияет использование модификатора final на локальные и глобальные переменные в Java
- С чего начать обучение Java?
- С Чего лучше всего начать учить JAVA И с каких сайтов начать обучение
- Стоит ли в 2019 году начинать обучаться языку программирования Java? Какие перспективы ждут после обучения?
- Повторное использование кода - это вообще реально?