将椭圆添加到JPanel(paintComponent)

时间:2011-01-12 18:14:36

标签: java swing jpanel paintcomponent

在具有嵌套JPanel的布局中,我希望添加一个绘制的椭圆。

为此我使用以下内容:

@Override
public void paintComponent(Graphics g)
{
    super.paintComponent(g);

    g.setColor(Color.GRAY);
    g.fillOval(20, 20, 20, 20);
}

现在在我的一个面板中我希望添加这个椭圆形,但我似乎无法添加它。

JPanel myPanel = new JPanel();
myPanel.setLayout(new GridLayout(0, 2));
//myPanel.add(...); here i wish to add the drawn oval

任何意见都赞赏!

3 个答案:

答案 0 :(得分:2)

执行此操作的方法是使用JComponent的子类来完成所需的绘图,然后将其添加到布局中。

class OvalComponent extends JComponent {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.GRAY);
        g.fillOval(20, 20, 20, 20);
    }
}

在GUI构造代码中,您可以拥有:

JPanel panel = new JPanel(new GridLayout(0, 2));
panel.add(new OvalComponent());

答案 1 :(得分:2)

您可以将mypanel.add(...)用于其他GUI元素。您要绘制的椭圆将是一个java2d对象,您必须绘制到面板上。为此,您必须使用上面发布的代码覆盖面板的paint()方法。

答案 2 :(得分:0)

 JPanel panel = new JPanel() {
    @Override
    public void paint(Graphics g) {
        g.drawRect(100, 100, 100, 100);
    }
 };

您可以覆盖JPanel类中的本机方法,该方法允许用户向其添加绘制组件。有了这个,您可以添加所有正常的图形输入,它将显示出来。该行代码应该在相对于面板左上角的坐标(100,100)处产生一个正方形。