在java中绘制圆形和矩形

时间:2015-05-14 07:07:29

标签: java

我是java新手,我想使用java代码绘制圆形和矩形。我确实为此目的编写了代码并尝试了自己的代码。但是面板出现了,形状没有出现。

“MyPanel”代码如下:

import javax.swing.*;
import java.awt.*;
public class MyPanel extends JPanel{
    public void painComponent(Graphics g){  
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.drawRect(20,20,20,20);
        g2.setColor(Color.blue);
        g2.fillOval(50,20,20,20);
        g2.drawString("Hello World", 120, 50);
    }//end painComponent 
}//end test class

下面给出了驱动程序类“测试”的Cdoe。

import javax.swing.*;
import java.awt.*;
public class Test{
    JFrame f; 
    MyPanel p; 
    public Test(){
        f = new JFrame();
        Container c = f.getContentPane();
        c.setLayout(new BorderLayout()); 
        p = new MyPanel(); 
        c.add(p, BorderLayout.CENTER);
        f.setSize(400,400);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }//end of constructor
    public static void main(String args[]){
        Test t = new Test();
    }
}

根据我的知识,当通过paintChildren()方法看到框架时,面板应该变得可见 另外要成为可见面板,会调用paintComponent()方法进行自定义绘图,但看起来面板不会调用paintComponent()

3 个答案:

答案 0 :(得分:3)

MyPanel中的方法称为painComponent: - )。

这就是调用基类中的方法的原因,您的方法不会覆盖JPanel中的任何方法。

答案 1 :(得分:0)

在MyPanel类中,方法名称应为paint,而不是painComponent。 这是一个被重写的方法,因此,名称很重要。 请将方法的名称更改为" paint"并尝试。

答案 2 :(得分:0)

你正在做一些拼写错误。 “MyPanel”中的方法是painComponent()而不是paintComponent()

您的原型中缺少

“t”,这就是您的程序无法覆盖MyPanel类中的paintComponent()的原因。

所以你要做的就是更新代码并替换为“paintComponent();”

完整的课程代码如下:

Array
(
    [0] => @QUESTION_VALUE_0
    [1] => 0
)

我已经测试了这段代码,它运行正常。