我是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()
。
答案 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
)
我已经测试了这段代码,它运行正常。