2 Layouts for JPanel?



我正在为一个程序制作一个gui,它使用JPanels。我有2个JPanels。第一个包含JLabelJTextField。第二个包含JLabelJTextField。我需要这两个都在屏幕的底部,一个在另一个的顶部。我尝试了BorderLayout.SOUTH,但其中一个Panels会覆盖另一个。如果我使用BoxLayout.Y_AXIS,那么它们不在中心或底部。我该怎么做?

编辑:我修复了它。当我把面板添加到框架时,我忘记了设置边框布局。所以我修复了它。

解决方案:嵌套JPanels

创建第三个JPanel,它使用面向BoxLayout.PAGE_AXIS的BoxLayout,将您的2个JPanels添加到其中,然后将主GUI(希望使用BorderLayout)的第三个JPEG添加到BorderLayout.PAGE_END位置。


例如,我的最小、完整和可验证示例程序:

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;
public class LayoutExample extends JPanel {
   public LayoutExample() {
      JPanel panel1 = new JPanel();
      panel1.add(new JLabel("Label 1"));
      panel1.add(new JTextField(10));
      panel1.setBorder(BorderFactory.createTitledBorder("Panel 1"));
      JPanel panel2 = new JPanel();
      panel2.add(new JLabel("Label 2"));
      panel2.add(new JTextField(10));
      panel2.setBorder(BorderFactory.createTitledBorder("Panel 2"));
      JPanel boxLayoutUsingPanel = new JPanel();
      boxLayoutUsingPanel.setLayout(new BoxLayout(boxLayoutUsingPanel, BoxLayout.PAGE_AXIS));
      boxLayoutUsingPanel.add(panel1);
      boxLayoutUsingPanel.add(panel2);
      boxLayoutUsingPanel.setBorder(BorderFactory.createTitledBorder("BoxLayout Panel"));
      setLayout(new BorderLayout());
      setBorder(BorderFactory.createTitledBorder("Main BorderLayout GUI"));
      add(Box.createRigidArea(new Dimension(400, 200)), BorderLayout.CENTER);
      add(boxLayoutUsingPanel, BorderLayout.PAGE_END);
   }
   private static void createAndShowGui() {
      LayoutExample mainPanel = new LayoutExample();
      JFrame frame = new JFrame("LayoutExample");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }
   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

如果仍然存在问题,请创建并发布您的最小、完整和可验证示例程序。

相关内容

  • 没有找到相关文章

最新更新