Я пытаюсь, чтобы одна панель отображалась под другой (textPanel отображалась под mainPanel).
Но вместо этого textPanel появляется поверх mainPanel:
FlatLightLaf.setup();
FlatLightLaf.supportsNativeWindowDecorations();
UIManager.setLookAndFeel(new FlatLightLaf());
JFrame frame = new JFrame();
frame.setTitle("Title");
frame.setSize(640, 480);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
JMenuItem menuFileSave = new JMenuItem("Save");
menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
menu.add(menuFileSave);
menuBar.add(menu);
FlowLayout mainLayout = new FlowLayout(FlowLayout.LEFT);
frame.setJMenuBar(menuBar);
JPanel mainPanel = new JPanel(new BorderLayout());
String datesString[] = {"Tuesday May-03-2022", "Monday May-02-2022"};
@SuppressWarnings("rawtypes")
JComboBox dateDropDown = new JComboBox<>(datesString);
dateDropDown.setFont(new Font("Calibri", Font.PLAIN, 17));
dateDropDown.setVisible(true);
mainPanel.add(dateDropDown);
mainPanel.setVisible(true);
frame.add(mainPanel);
JPanel textPanel = new JPanel(new BorderLayout());
JTextArea textArea = new JTextArea();
textPanel.add(textArea);
textPanel.setVisible(true);
frame.add(textPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Как мне убедиться, что textPanel идет ниже mainPanel в своей собственной строке/строке, а не поверх нее?
По умолчанию при добавлении одного компонента без дополнительных аргументов в JFrame
данный компонент будет занимать всю клиентскую область, поскольку JFrame
по умолчанию использует BorderLayout
. Таким образом, ваше решение состоит в том, чтобы добавить использовать в качестве дополнительного аргумента, чтобы добавить его внизу макета:
frame.add(textPanel, BorderLayout.PAGE_END);