Создание Jframe с диалоговым вводом данных - Java
Формулировка задачи:
Добрый день. У меня есть задача: нужно показать в окне пять кнопок с надписями. Определить в диалоговом вводе способ укладки компонентов указав соответствующую букву.
A) в поле BorderLayout
Б) в FlowLayout
C) в FlowLayout, выровненном слева
D) в FlowLayout, выровненном справа
E) в GridLayout в виде одной строки
F) в GridLayout как один столбец
G) в таблице GridLayout в виде таблицы (3, 2)
Я не знаю как это реализовать, может быть через switch case? И как прежде JFrame создать диалоговый ввод?
Листинг программы
- public class Task {
- public static void main(String[] args) {
- ButtonFrame frame = new ButtonFrame();
- frame.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
- frame.setVisible(true);
- }
- }
- class ButtonFrame extends JDialog {
- public ButtonFrame() {
- setSize(300,200);
- setTitle("5 Buttons.");
- ButtonPanel panel = new ButtonPanel();
- add(panel);
- }
- }
- class ButtonPanel extends JPanel {
- public ButtonPanel() {
- JButton firstButton = new JButton("1");
- JButton secondButton = new JButton ("2");
- JButton thirdButton = new JButton("3");
- JButton fourthButton = new JButton("4");
- JButton fifthButton = new JButton("5");
- add(firstButton);
- add(secondButton);
- add(thirdButton);
- add(fourthButton);
- add(fifthButton);
- }
- }
Решение задачи: «Создание Jframe с диалоговым вводом данных»
textual
Листинг программы
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- public class Task {
- public static void main(String[] args) {
- FlowLayout flowLayout = new FlowLayout();
- GridLayout gridLayout = new GridLayout();
- BorderLayout borderLayout = new BorderLayout();
- JPanel panel = new JPanel(borderLayout);
- panel.add(new JButton("1"), BorderLayout.NORTH);
- panel.add(new JButton("2"), BorderLayout.WEST);
- panel.add(new JButton("3"), BorderLayout.CENTER);
- panel.add(new JButton("4"), BorderLayout.EAST);
- panel.add(new JButton("5"), BorderLayout.SOUTH);
- JFrame mainFrame = new JFrame();
- mainFrame.setSize(300, 200);
- mainFrame.setTitle("5 Buttons.");
- mainFrame.add(panel);
- mainFrame.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
- mainFrame.setLocationRelativeTo(null);
- mainFrame.setVisible(true);
- JDialog dialogFrame = new JDialog(mainFrame, "Select item", false);
- JComboBox<String> items = new JComboBox<>(new String[]{"A", "B", "C", "D", "E", "F", "G"});
- items.setSelectedIndex(0);
- items.setAction(new AbstractAction() {
- @Override
- public void actionPerformed(ActionEvent e) {
- switch (items.getSelectedIndex()) {
- case 0:
- panel.setLayout(borderLayout);
- break;
- case 1:
- flowLayout.setAlignment(FlowLayout.CENTER);
- panel.setLayout(flowLayout);
- break;
- case 2:
- flowLayout.setAlignment(FlowLayout.LEFT);
- panel.setLayout(flowLayout);
- break;
- case 3:
- flowLayout.setAlignment(FlowLayout.RIGHT);
- panel.setLayout(flowLayout);
- break;
- case 4:
- gridLayout.setRows(1);
- gridLayout.setColumns(5);
- panel.setLayout(gridLayout);
- break;
- case 5:
- gridLayout.setColumns(1);
- gridLayout.setRows(5);
- panel.setLayout(gridLayout);
- break;
- case 6:
- gridLayout.setRows(3);
- gridLayout.setColumns(2);
- panel.setLayout(gridLayout);
- break;
- }
- panel.setVisible(false);
- panel.setVisible(true); // просто для перерисовки, repaint не сработал
- // dialogFrame.setVisible(false); // если нужно чтобы после выбора диалоговое окно исчезло
- // mainFrame.setVisible(true); // если нужно чтобы главное окно появилось после выбора буквы ( закомментировать верхний mainFrame.setVisible )
- }
- });
- dialogFrame.getContentPane().add(items);
- dialogFrame.setSize(300, 80);
- dialogFrame.setLocationRelativeTo(null);
- dialogFrame.setVisible(true);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д