Java “错误”;方法setDefaultCloseOperation(int)对于类型Frame“未定义;
我使用的是Visual Studio代码2020,它给了我一个错误“类型框架的方法setDefaultCloseOperation(int)未定义” 问题是52号线Java “错误”;方法setDefaultCloseOperation(int)对于类型Frame“未定义;,java,swing,compiler-errors,jframe,Java,Swing,Compiler Errors,Jframe,我使用的是Visual Studio代码2020,它给了我一个错误“类型框架的方法setDefaultCloseOperation(int)未定义” 问题是52号线 我试着寻找答案,但我发现没有一个有效 我是个书呆子,几天前学过java。我真的不太懂,但我现在正试图了解图形是如何工作的。这个错误意味着setDefaultCloseOperation(int)不能作为对象帧的方法。这可能是因为帧对象中没有具有该名称的方法,或者如果有这样的方法,则没有一个方法接受单个int参数 在此处查找Fra
我试着寻找答案,但我发现没有一个有效
我是个书呆子,几天前学过java。我真的不太懂,但我现在正试图了解图形是如何工作的。这个错误意味着
setDefaultCloseOperation(int)
不能作为对象帧的方法。这可能是因为帧对象中没有具有该名称的方法,或者如果有这样的方法,则没有一个方法接受单个int参数
在此处查找Frame和JFrame的API:
setDeaultCloseOperation似乎是为JFrame对象定义的,而不是为Frame定义的。JFrame扩展了Frame,这意味着它是一种特定的框架。具体来说,它是一个具有setDefaultOperation()
方法的框架
也许可以将框架定义更改为frame-frame=newjframe()代码>
或者JFrame=newjframe()
您的标记表示您正在询问JFrame,它确实具有setDefaultCloseOperation(…)
方法
但是,您的代码使用的是Frame
,它是AWT组件,而不是Swing组件。使用JFrame
进行Swing
另外,您的类正在扩展Canvas
。对于Swing应用程序,您应该扩展JPanel
并覆盖paintComponent()
如果可以使用Swing,则无需使用AWT组件
我现在正在努力学习图形是如何工作的
首先,您不应该在绘制方法中创建组件。绘制方法应仅使用图形对象进行绘制
阅读Swing教程中关于工作示例的部分,以开始学习
按照教程中的示例学习正确结构的代码。您在这里发布的代码大部分是错误的。您希望使用Swing类JFrame,而不是awt类Frame。
import java.awt.Frame;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import java.awt.Color;
public class Main {
public static void main(String[] args) {
boolean loop = false;
/* while (loop = true) {
try {
Thread.sleep(2000);
} catch (InterruptedException reallyIgnored) {}
System.out.println("Loop is working.");
} */
}
static class GraphicsEngine extends Component {
public void paint(Graphics g) {
// Creating Graphics Shortcut
Graphics2D g2d = (Graphics2D)g;
// Creating new framw window, declaring size
Frame frame = new Frame();
frame.add(new GraphicsEngine());
int frameWidth = 700;
int frameHeight = 500;
frame.setSize(frameWidth, frameHeight);
frame.setLayout(null);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
/* Next part will create dot that moves across screen.
It will have a loop that draws the dot, and also a loop
that erases the previous dot. */
g2d.SetColor(new Color(255, 255, 255));
g2d.fillRect(0, 0, getSize().height-1, getSize().height-1);
}
}
}