Создание 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);
}
}