小编典典

JPanel会填充所有JFrame空间

java

我已经编写了这段代码来显示面板上的一些颜色:

import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Palette {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Panel");

        palette.add(new Color(255, 0, 0));
        palette.add(new Color(0, 255, 0));
        palette.add(new Color(0, 0, 255));

        int width = 100;
        int height = 250;
        int x = 0;
        for (Color color : palette) {
            JPanel panel = new JPanel();

            panel.setSize(width, height);
            panel.setLocation(x, 750);
            panel.setBackground(new java.awt.Color(color.getColor()));

            frame.add(panel);

            x+=width;
        }
        frame.pack();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1000, 1000);
        frame.setVisible(true);
    }

}

正确位置和正确尺寸的两个第一面板。但是最后一个将所有帧填充为蓝色。怎么了?


阅读 318

收藏
2020-11-26

共1个答案

小编典典

您必须使用适当的布局管理器。默认情况下,JFrame有一个BorderLayout

查看本教程的LayoutManagers:

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

2020-11-26