![](/img/trans.png)
[英]I can't get graphics to draw on my panel/canvas/window in my Java program (swing). Any Ideas?
[英]Java Swing: Why are my panels layered? I can't see my first panel
我試圖讓一個面板顯示在另一個面板下方(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
,該組件將占據整個客戶區,因為JFrame
默認使用BorderLayout
。 因此,您的解決方案是使用進一步的參數,告訴它將它添加到布局的底部:
frame.add(textPanel, BorderLayout.PAGE_END);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.