我试图在 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组件,并且该方法不是真正的绘画方法重写。不要猜测这些东西,而是阅读图形教程:
- Lesson: Performing Custom Painting :Swing 图形入门教程
- Painting in AWT and Swing :Swing 图形高级教程
然后创建一个扩展 JPanel 的类,并在其 PaintComponent 方法中进行绘制,如教程将向您展示的那样。将您的 JPanel 放入 JFrame 中,您应该就可以了。
另外 - 请记住在您认为应该覆盖父类(super class)方法的任何方法之前附加@Override
。如果您这样做了,编译器会提示您的绘制方法实际上没有覆盖任何内容。另外,不要忘记调用 super 的 PaintComponent 方法,正如第一个教程中所解释的那样。
关于Java:如何在 JFrame 中绘制矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40668608/