我已经使用多个布局管理器部署了JButton,但是它不能正确显示

问题描述 投票:-1回答:2

我想放置几个按钮来检查不同布局管理器之间的差异。但是我编写的代码仅显示一个布局管理器显示的按钮,而另一个布局管理器的按钮根本不显示。我该怎么办?

这是我的代码:

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.*;

public class No2{
    public No2() {
        JFrame frame=new JFrame("MyFrame");
        JPanel MainPanel=new JPanel();
        JPanel panel1=new JPanel();
        JPanel panel2=new JPanel();
        JPanel panel3=new JPanel();

        JButton[] btn=new JButton[5];
        for (int i = 0; i < btn.length; i++) {
            btn[i]=new JButton("Button"+(i+1));
        }

        frame.add(MainPanel);
        MainPanel.setLayout(new GridLayout(3,1));
        MainPanel.add(panel1);
        MainPanel.add(panel2);
        MainPanel.add(panel3);

        panel1.setLayout(new FlowLayout());
        for (int i = 0; i < btn.length; i++) {
            panel1.add(btn[i]);
        }
        panel1.setLayout(new BorderLayout());
        for (int i = 0; i < btn.length; i++) {
            panel2.add(btn[i]);
        }
        panel1.setLayout(new GridLayout());
        for (int i = 0; i < btn.length; i++) {
            panel3.add(btn[i]);
        }


        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new No2();
    }
}
java swing awt
2个回答
0
投票

您每次都将布局设置为panel1-而不是将不同的布局分配给不同的面板。


0
投票

您要多次重新添加相同的JButton,因此无法正常工作。您只能将组件添加到one容器。

© www.soinside.com 2019 - 2024. All rights reserved.