【问题标题】:Trying to draw a simple rectangle with JPanel, but nothing is showing up尝试使用 JPanel 绘制一个简单的矩形,但没有显示任何内容
【发布时间】:2015-10-08 03:10:58
【问题描述】:

我目前正在阅读《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 新手,所以我想完全理解。

提前致谢!

【问题讨论】:

  • 您不会将此面板添加到框架的某个位置
  • @pL4Gu33 现在说得通了。但是我该怎么做呢?我应该创建一个 DrawPanel 类的实例,然后通过 getContentPane().add() 添加到窗格中吗?
  • @AslambekHudajev:在 Swing 中,为方便起见,add 方法及其变体 removesetLayout 已被覆盖,以便在必要时转发到 contentPane。这意味着你可以写frame.add(child);

标签: java graphics jpanel awt paintcomponent


【解决方案1】:

您需要实例化一个DrawPanel 并将其添加到DrawTest 中的frame。首先包含DrawPanel 的构造函数,然后在go() 方法中添加这些行:

DrawPanel panel = new DrawPanel();
frame.add(panel);

【讨论】:

  • 非常感谢!我有一种感觉,答案会很直接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多