Java - JPanel is only one small pixel in the top center of my JFrame

Aaz*_*dul 2 java swing jpanel layout-manager flowlayout

The JPanel called panel only shows up as one small red square up the top center, I have tried to set the size but it doesn't seem to do anything.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;   

public class Draw extends JFrame{

private JPanel panel;

    public Draw() {
        super("title");
        setLayout(new FlowLayout());        
        panel = new JPanel();       
        panel.setBackground(Color.RED);
        add(panel, BorderLayout.CENTER);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mad*_*mer 5

a的默认首选大小JPanel0x0. FlowLayout根据组件的首选尺寸布置组件,因此组件现在具有优选的尺寸1x1(线条边框增加了一点重量).

您可以尝试添加另一个组件panel...

panel.add(new JLabel("This is some text"));
Run Code Online (Sandbox Code Playgroud)

或覆盖panel小号getPreferredSize方法...

panel = new JPanel() {
    public Dimension getPreferredSize() {
        return new Dimension(100, 100);
    }
};
Run Code Online (Sandbox Code Playgroud)