我不明白为什么我的代码无效,尝试在我的JFrame
中打印一个矩形,但最终导致f.add(p);
上的错误。
import javax.swing.*;
import java.awt.*;
public class SPEL{
public void paintComponent(Graphics g){
g.drawRect(50,75,100,50);
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(400, 300);
f.setLocation(100,100);
f.setTitle("SPEL");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SPEL p = new SPEL();
f.add(p);//error
f.setVisible(true);
}
}
答案 0 :(得分:3)
您忘了extends
某事,例如:
public class SPEL extends JPanel {
您可以添加@Override
以减少出现此类错误的可能性
@Override
public void paintComponent(Graphics g){
答案 1 :(得分:1)
import javax.swing.*;
import java.awt.*;
@SuppressWarnings("serial")
public class SPEL extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setPaint(Color.red);
Rectangle b = new Rectangle(50, 75, 100, 50);
g2d.draw(b);
g2d.fill(b);
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(400, 300);
f.setLocation(100, 100);
f.setTitle("SPEL");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SPEL p = new SPEL();
f.add(p);
f.setVisible(true);
}
}
extends JPanle
@Override
Using Graphics2D
g2d.fill(Shape s)