1

我正在尝试使用 Java 中的 swing 绘制一个非常基本的形状,但是由于某种原因,它似乎不起作用。这是我从讲师那里下载的代码,他在讲座中向我们展示了,但是当我运行它时,窗口打开但没有绘制任何内容,我不知道为什么。

package graphicsEx;

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

public class Lecture1Example extends JPanel{
    // This is where the JPanel gets (re-)painted when the screen is refreshed.
    public void paintComponent(Graphics g) {
        // Cast to Graphics2D for more features.        
        Graphics2D g2D = (Graphics2D) g;

        Rectangle2D rect = new Rectangle2D.Double(20,30,40,50);
        g2D.setColor(Color.red);
        g2D.draw(rect);
        g2D.fill(rect); 
    }

    public static void main(String args[]) {
        JFrame frame = new JFrame("Playing with Graphics");
        frame.setSize(500, 400);
        frame.setVisible(true);
        frame.setContentPane(new Lecture1Example());        
    }
}

我正在使用 Eclipse IDE。

4

1 回答 1

7

尊敬的user1821475的讲师:

  • Swing GUI 对象应该事件分派线程上构建和操作。

  • “具有 UI 委托的 Swing 组件的子类(与 的直接子类相比JComponent)应super.paintComponent()在其paintComponent覆盖范围内调用。

  • “作为一种便利add及其变体,removesetLayout已被覆盖以根据需要转发contentPane。”

  • 最外层Container应该setVisible()调用pack()和其他影响几何的方法之后。

于 2013-01-10T19:14:11.013 回答