Я пишу некоторый простой код, который должен иметь строки и должен иметь метку и ввод текста в верхней строке и 4 кнопки в нижней строке. При изменении размера окна все должно оставаться на своем месте, а не перетекать в одну строку. Сейчас я упускаю что-то, что мешает моему нижнему ряду перейти к моему верхнему ряду, когда jframe становится шире.
Структура выглядит как JFRAME (ContainerPanel NORTH (NORTH: subPanelTop (метка и ввод), SOUTH: subPanelBottom (Buttons))
Когда я открываю программу и получаю JFrame с шириной 200 пикселей, все появляется в двух строках, как и должно быть, но когда я изменяю размер, чтобы быть шире, все появляется в верхнем ряду. Как заставить их оставаться двумя рядами друг над другом независимо от ширины?
Моя домашняя работа говорит, что я "должен использовать borderlayout".
Код:
myEventA.java
import javax.swing.*;
import java.awt.*;
public class myEventA extends JFrame{
public myEventA(){
JPanel panelTop = new JPanel();
JPanel containerPanel = new JPanel();
this.setTitle("MyEventA");
JPanel subPanelTop = new JPanel();
JLabel currentValueLbl = new JLabel("Current Value: ",SwingConstants.RIGHT);
JTextField currentValue = new JTextField(15);
subPanelTop.add(currentValueLbl);
subPanelTop.add(currentValue);
containerPanel.add(subPanelTop, BorderLayout.NORTH);
JPanel subPanelBottom = new JPanel();
JButton btn1 = new JButton("+");
JButton btn2 = new JButton("-");
JButton btn3 = new JButton("Reset");
JButton btn4 = new JButton("Quit");
subPanelBottom.add(btn1);
subPanelBottom.add(btn2);
subPanelBottom.add(btn3);
subPanelBottom.add(btn4);
containerPanel.add(subPanelBottom, BorderLayout.SOUTH);
containerPanel.setPreferredSize(new Dimension(640, 480));
this.add(containerPanel, BorderLayout.NORTH);
}
}
TestMyEventA.java
import javax.swing.*; // for JFrame, JPanel, JLabel, JTextField,
import java.awt.*; // for BorderLayout
public class TestMyEventA {
public static void main(String[] args) {
myEventA test = new myEventA();
test.setSize(200,300);
test.setLocationRelativeTo(null);
test.setVisible(true);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}