尝试使用 JPanel 绘制一个简单的矩形,但没有显示任何内容
Trying to draw a simple rectangle with JPanel, but nothing is showing up
我正在阅读这本书 "Head First Java"。这本书很棒,我真的很喜欢读它。但是我突然停下来了。
这本书正在使用 swing 库进行 GUI 编程,事实证明这比我想象的要容易。在本章的 GUI 部分之后,本书介绍了绘制图形、awt 库和图形对象。这就是我被困的地方。以下是我的代码,它编译得很好,但似乎不想渲染矩形。
import java.awt.*;
import javax.swing.*;
public class DrawTest
{
JFrame frame;
public static void main(String[] args)
{
DrawTest test = new DrawTest();
test.go();
}
public void go()
{
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 800);
frame.setVisible(true);
frame.setResizable(false);
}
}
class DrawPanel extends JPanel
{
public void paintComponent(Graphics g)
{
g.setColor(Color.green);
g.drawRect(70, 70, 200, 200);
}
}
我做错了什么?这很可能非常明显,但我没有看到。我非常感谢一个详尽的回答,我是 Java 的新手,所以我想完全理解。
提前致谢!
您需要实例化一个 DrawPanel
并将其添加到 DrawTest
中的 frame
。首先包含 DrawPanel
的构造函数,然后在 go()
方法中添加这些行:
DrawPanel panel = new DrawPanel();
frame.add(panel);
我正在阅读这本书 "Head First Java"。这本书很棒,我真的很喜欢读它。但是我突然停下来了。 这本书正在使用 swing 库进行 GUI 编程,事实证明这比我想象的要容易。在本章的 GUI 部分之后,本书介绍了绘制图形、awt 库和图形对象。这就是我被困的地方。以下是我的代码,它编译得很好,但似乎不想渲染矩形。
import java.awt.*;
import javax.swing.*;
public class DrawTest
{
JFrame frame;
public static void main(String[] args)
{
DrawTest test = new DrawTest();
test.go();
}
public void go()
{
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 800);
frame.setVisible(true);
frame.setResizable(false);
}
}
class DrawPanel extends JPanel
{
public void paintComponent(Graphics g)
{
g.setColor(Color.green);
g.drawRect(70, 70, 200, 200);
}
}
我做错了什么?这很可能非常明显,但我没有看到。我非常感谢一个详尽的回答,我是 Java 的新手,所以我想完全理解。
提前致谢!
您需要实例化一个 DrawPanel
并将其添加到 DrawTest
中的 frame
。首先包含 DrawPanel
的构造函数,然后在 go()
方法中添加这些行:
DrawPanel panel = new DrawPanel();
frame.add(panel);