error“类型frame的setdefaultcloseoperation(int)方法未定义”

ipakzgxi  于 2021-07-04  发布在  Java
关注(0)|答案(2)|浏览(560)

我使用的是VisualStudioCode2020,它给了我一个错误“类型frame的setdefaultcloseoperation(int)方法未定义”
问题是52号线,

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);

        }

    }

}

我试过寻找答案,但没有一个是有效的。
我是个笨蛋,几天前学了 java 语。我真的不太懂,但我现在正在努力学习图形是如何工作的

tf7tbtn2

tf7tbtn21#

你的标签上说你在问一个jframe,它有 setDefaultCloseOperation(...) 方法。
但是,您的代码正在使用 Frame 它是awt组件,不是swing组件。使用 JFrame 为了秋千。
另外,你们班正在扩展 Canvas . 对于swing应用程序,您应该扩展 JPanel 和覆盖 paintComponent() .
如果可以使用swing,就不需要使用awt组件。
我现在正在努力学习图形是如何工作的
首先,您不应该在绘制方法中创建组件。一种绘画方法只能用图形对象来作画。
阅读swing教程中有关自定义绘制的部分,以获得开始使用的工作示例。
按照教程中的示例来获得结构正确的代码。你贴在这里的代码大部分是错的。

dvtswwa3

dvtswwa32#

这个错误意味着 setDefaultCloseOperation(int) 找不到作为对象的方法的 frame . 这可能是因为frame对象中没有具有该名称的方法,或者如果有这样一个方法,则没有一个方法接受单个int参数。
在此处查找frame和jframe的api:https://docs.oracle.com/javase/7/docs/api/java/awt/frame.htmlhttpshttp://docs.oracle.com/javase/7/docs/api/javax/swing/jframe.html
setdeaultcloseoperation似乎是为jframe对象而不是frame对象定义的。jframe扩展了frame,意思是它是一种特定的frame。具体来说,它是一个具有 setDefaultOperation() 方法。
或许可以将帧定义更改为 Frame frame = new JFrame(); 或者 JFrame frame = new JFrame();

相关问题