错误java JFrame

时间:2013-05-17 10:16:23

标签: java swing graphics jframe awt

我不明白为什么我的代码无效,尝试在我的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);
    }
}

2 个答案:

答案 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)