В качестве упражнения я пытаюсь создать приложение для проведения викторины, но не могу понять, как сделать такой макет:
JOptionPane.showConfirmDialog(panel,"How to make this layout?","QUIZ FRAME",JOptionPane.YES_NO_CANCEL_OPTION);
В частности, я не могу найти способ вставить вопрос в первую строку, а все остальные кнопки - в другую строку (или несколько строк, если ответы длинные). Я пробовал использовать все возможные менеджеры компоновки, но получаю либо по одному объекту на строку (GridLayout), либо все в одной строке, как в FlowLayout.
Я понимаю, как использовать ActionEvent для перехода к следующей панели (вопрос) если я нажму кнопку (ответ) и все остальное, но не этот простой макет, который я ищу. Есть какие-нибудь советы?
EDIT: я намеревался создать такой же макет, но без использования JOptionPane. Мне удалось сделать нечто подобное с нуля с несколькими панелями и вложенными макетами. Я только новичок, поэтому уверен, что должен быть другой способ сделать это лучше.
public static void main(String[] args) {
JFrame frame = new JFrame("QUIZ FRAME");
JPanel panel = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JLabel question1 = new JLabel("QUESTION 1");
JLabel questiontext = new JLabel(" TEXT FOR QUESTION NUMBER 1 ");
JButton answer = new JButton("Answer");
JButton answer2 = new JButton("Answer2");
JButton answer3 = new JButton("Answer3");
answer.setSize(50,50);
answer2.setSize(50,50);
answer3.setSize(50,50);
BorderLayout framelayout = new BorderLayout();
BorderLayout panellayout = new BorderLayout();
BorderLayout panellayout2 = new BorderLayout();
GridLayout panellayout3 = new GridLayout(1,3,30,30);
frame.setLayout(framelayout);
panel.setLayout(panellayout);
panel2.setLayout(panellayout2);
panel3.setLayout(panellayout3);
panel.setBackground(Color.BLUE);
panel2.setBackground(Color.RED);
panel.setPreferredSize(new Dimension( 500,30));
panel2.setPreferredSize(new Dimension(500,50));
frame.add(panel, framelayout.NORTH);
frame.add(panel2,framelayout.CENTER);
frame.add(panel3,framelayout.SOUTH);
question1.setHorizontalAlignment(0);
question1.setVerticalAlignment(0);
panel.add(question1);
panel2.add(questiontext, panellayout2.WEST);
panel3.add(answer);
panel3.add(answer2);
panel3.add(answer3);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}