簡體   English   中英

Java Swing:為什么我的面板是分層的? 我看不到我的第一個面板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM