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、そのバリアントは、必要に応じて に転送するようにオーバーライドされていremoveます。」setLayoutcontentPane

  • 最も外側にあるのは、ジオメトリに影響を与える他のメソッドを呼び出した後でのみにContainerする必要があります。setVisible()pack()

于 2013-01-10T19:14:11.013 に答える