无法在JFrame上显示所有按钮



下面是我的代码。我不能添加所有的6个按钮。只有按钮1 - 3或按钮4-6被显示在同一时间。

请让我知道我哪里做错了。

// This class contains the main method and launches the Main screen 
import javax.swing.*;
import java.awt.*;
public class LearningHome{
    public static void main(String[] args){
        JFrame mainFrame = new JFrame("Welcome to the Learning! ");
        try {
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(800, 800);
        mainFrame.setVisible(true); // Without this property the frame will not be visible
        FlowLayout mainLayout = new FlowLayout();
        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(mainLayout);
        mainPanel.add(new JButton(" Button 1 "));
        mainPanel.add(new JButton(" Button 2 "));
        mainPanel.add(new JButton(" Button 3 "));
        JPanel subPanel = new JPanel();
        subPanel.setLayout(mainLayout);
        subPanel.add(new JButton(" Button 4 "));
        subPanel.add(new JButton(" Button 5 "));
        subPanel.add(new JButton(" Button 6 "));
        mainFrame.add(mainPanel, mainLayout.LEFT);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.add(subPanel, mainLayout.RIGHT);
    }
}

您没有提到您所寻求的确切布局,并且有很多方法可以安排组件,但是要解决您的特定注释

我不能添加所有的6个按钮。只有Button1 - 3或Button4-6被显示在同一时间

  1. JFrame变为可见之前添加所有元素(例如:将组件添加到mainFrame后,移动mainFrame.setVisible(true)。这样,LayoutManager可以根据需要安排组件
  2. 考虑在调用setVisible之前调用mainFrame.pack();(参见.pack()做什么?)
  3. JFrame的内容窗格的默认LayoutManagerBorderLayout (JPanel的默认是FlowLayout -所以不需要显式地设置布局)…如果你希望添加两个面板,使它们在一条线上布局,请考虑使用适当的BorderLayout参数组合。
例如:

mainFrame.add(mainPanel, BorderLayout.WEST);
mainFrame.add(mainPanel, BorderLayout.EAST);
mainFrame.pack();//call these methods after adding components
mainFrame.setVisible(true);

您也可以使用适当的BorderLayout参数将它们堆叠成两行。例如:

mainFrame.add(mainPanel, BorderLayout.CENTER);
mainFrame.add(mainPanel, BorderLayout.SOUTH);

相关内容

  • 没有找到相关文章

最新更新