Java 使用FlowLayout将JPanel添加到JFrame
我试图使用JPanel的子类在屏幕上显示一个填充的椭圆形 当我尝试将此子类的对象添加到带有FlowLayout的JFrame时,椭圆没有正确显示,我不知道问题出在哪里。你能帮我吗 这是我的密码Java 使用FlowLayout将JPanel添加到JFrame,java,swing,jframe,jpanel,flowlayout,Java,Swing,Jframe,Jpanel,Flowlayout,我试图使用JPanel的子类在屏幕上显示一个填充的椭圆形 当我尝试将此子类的对象添加到带有FlowLayout的JFrame时,椭圆没有正确显示,我不知道问题出在哪里。你能帮我吗 这是我的密码 @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); g.fillOval(0, 0, 50, 50); } 大体上
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillOval(0, 0, 50, 50);
}
大体上
JFrame frame = new JFrame("Ball");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setLayout(new FlowLayout());
BallPanel ball = new BallPane();
frame.add(ball);
创建任何自定义组件并进行自定义绘制时,需要重写
getPreferredSize()
方法以返回自定义组件的大小。理想情况下,您还可以覆盖最小/最大尺寸
然后布局管理器可以完成它的工作。请参阅
FlowLayout的Javadoc
:
流布局允许每个组件假定其自然(首选)大小
由于您进行了一些自定义绘制,因此球面板
无法计算其首选尺寸(基于添加到面板中的组件)。因此,在BallPanel
类中重写getPreferredSize
方法以返回正确的尺寸(正确表示与自定义绘制匹配)。考虑对<代码> GETMimuMuths和<代码> GeimthMuthSimule
当我必须调试Swing布局问题时,我通常使用的方法是以特定颜色为组件添加边框。通过这种方式,您可以清楚地看到组件在其父容器中的大小,这可能是调试的良好起点。在您的例子中,它将显示一个非常小的面板;-)