使用没有GridLayout的JPanels在JFrame上绘制一个圆和线

时间:2014-04-19 20:53:21

标签: java swing jframe jpanel

目前我正在尝试在画布上画一条线和一个圆圈(它会像轮子一样动画制作)。

我有一个名为WheelAnimation()的构造函数。

在这个构造函数中,我有两个实现类,第一个是圆:

class CircleComponent extends JComponent
{
    private static final long serialVersionUID = 1L;

    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;
        for(int i = 0; i < 200; i++)
        {
            // repaint();
            g2.fillOval(i, 50, 50, 50);
        }
    }
}

final CircleComponent component2 = new CircleComponent();
panel.add(component2);

这将在圆圈下划线:

class LineComponent extends JComponent
{
    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;
        g2.drawLine(120, 120, 380, 120);
    }
}

final LineComponent component = new LineComponent();
panel.add(component);

如果我使用setLayout方法,例如:panel.setLayout(new GridLayout(1, 1));

我可以让两个项目显示出来(虽然它们的格式不好)。

http://puu.sh/8fm9B/4f1dc1d0e5.png

但是如果删除setLayout方法,尽管坐标保持不变,但我的框架上没有任何内容显示出来。

有人能告诉我为什么会这样,并就如何设置这些布局并让它们出现给我一个建议吗?

1 个答案:

答案 0 :(得分:0)

  

我可以让两个项目显示出来(虽然它们的格式不好)。

使用布局管理器时,它负责设置添加到面板的组件的大小和位置。

如果您不使用布局管理器,那么您的应用程序代码负责设置每个组件的大小和位置。