Java:如何在 JFrame 中绘制矩形?

标签 java swing

我试图在 JFrame 中绘制一个矩形,但当我运行它时,它只是显示为空白。我尝试了几种其他方法来绘制它,但它们都一样。请记住,我是个新手,所以如果有任何明显的错误,我很抱歉:P。

import javax.swing.*;
import java.awt.*;

public class Main {

JFrame jf1;

public Main() {

    jf1 = new JFrame("Draw");
    jf1.setVisible(true);
    jf1.setSize(900, 700);
    jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    jf1.setLocation(dim.width/2-jf1.getSize().width/2, dim.height/2-jf1.getSize().height/2);

}

public void paint(Graphics g) {

    g.fillRect(0, 60, 100, 50);
    g.setColor(Color.BLACK);

}   

public static void main(String[] args) {

    Main shoe = new Main();

    }   
}  

最佳答案

你的类有一个paint方法,但它没有意义,因为该类没有扩展GUI组件,并且该方法不是真正的绘画方法重写。不要猜测这些东西,而是阅读图形教程:

然后创建一个扩展 JPanel 的类,并在其 PaintComponent 方法中进行绘制,如教程将向您展示的那样。将您的 JPanel 放入 JFrame 中,您应该就可以了。

另外 - 请记住在您认为应该覆盖父类(super class)方法的任何方法之前附加@Override。如果您这样做了,编译器会提示您的绘制方法实际上没有覆盖任何内容。另外,不要忘记调用 super 的 PaintComponent 方法,正如第一个教程中所解释的那样。

关于Java:如何在 JFrame 中绘制矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40668608/

相关文章:

java - Android 和 C++ : Necessary?

java - 与另一个一起启动一个主类

java - 泛型和 java.beans.Introspector

java - JRadioButton 未正确显示

java - 为什么构造函数值不继承属性限制

java - 使用 java swing 模拟 apk 文件以便在我的桌面上使用它

java - 将 Actionlistener 类型转换为整数 java

java - JFrame 的真正方法是什么,在 Linux 中最小化它

java - 在 Netbeans 中重新生成所有 Java Swing 页面的快速方法?

java - 导航不适用于 struts 2