JPanel 类型的方法未定义
The method is undefined for the type JPanel
所以我正在尝试创建一个简单的程序来打印出一个矩形,但是我遇到了这个问题而且我不知道如何解决它。这是我的代码:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
public class GraphicsEditor extends JPanel{
public void drawShape(Graphics g) {
super.drawShape(g);
g.setColor(Color.BLUE);
g.drawRect(100, 100, 120, 150);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
GraphicsEditor ga = new GraphicsEditor();
frame.setSize(1280, 720);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(ga);
}
}
当我尝试在此处添加 super
时出现错误:
public void drawShape(Graphics g) {
super.drawShape(g);
g.setColor(Color.BLUE);
g.drawRect(100, 100, 120, 150);
}
一个JPanel
没有drawShape(Graphics)
方法,所以调用'super'方法没有意义。当您认为您正在重写一个方法时,请务必添加 @Override
符号,以便在该方法拼写错误、使用错误参数或完全不存在(情况就是这样)时获得编译器警告在这里)。
正确的做法是覆盖 paintComponent
方法,调用(现有的)超级方法,然后立即使用提供的 Graphics
实例调用 drawShape
方法paintComponent
方法。
这是缩小 GUI 后的结果:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
public class GraphicsEditor extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
drawShape(g);
}
// @Override // does NOT override an existing method!
public void drawShape(Graphics g) {
//super.drawShape(g);
g.setColor(Color.BLUE);
g.drawRect(100, 100, 120, 150);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
GraphicsEditor ga = new GraphicsEditor();
frame.setSize(280, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(ga);
}
}
所以我正在尝试创建一个简单的程序来打印出一个矩形,但是我遇到了这个问题而且我不知道如何解决它。这是我的代码:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
public class GraphicsEditor extends JPanel{
public void drawShape(Graphics g) {
super.drawShape(g);
g.setColor(Color.BLUE);
g.drawRect(100, 100, 120, 150);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
GraphicsEditor ga = new GraphicsEditor();
frame.setSize(1280, 720);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(ga);
}
}
当我尝试在此处添加 super
时出现错误:
public void drawShape(Graphics g) {
super.drawShape(g);
g.setColor(Color.BLUE);
g.drawRect(100, 100, 120, 150);
}
一个JPanel
没有drawShape(Graphics)
方法,所以调用'super'方法没有意义。当您认为您正在重写一个方法时,请务必添加 @Override
符号,以便在该方法拼写错误、使用错误参数或完全不存在(情况就是这样)时获得编译器警告在这里)。
正确的做法是覆盖 paintComponent
方法,调用(现有的)超级方法,然后立即使用提供的 Graphics
实例调用 drawShape
方法paintComponent
方法。
这是缩小 GUI 后的结果:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
public class GraphicsEditor extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
drawShape(g);
}
// @Override // does NOT override an existing method!
public void drawShape(Graphics g) {
//super.drawShape(g);
g.setColor(Color.BLUE);
g.drawRect(100, 100, 120, 150);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
GraphicsEditor ga = new GraphicsEditor();
frame.setSize(280, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(ga);
}
}