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

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы