5

JPanel の paintComponent() を使用して形状 (下の例では長方形) を描画するプログラムを作成しようとしていますが、動作させることができず、何が問題なのかを特定できません。

コードは次のとおりです。

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

public class RandomRec{
    JFrame frame;

    public void go(){
        frame = new JFrame();
        frame.setSize(500,500);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        DrawPanel panel = new DrawPanel();
    }

    public static void main (String[] args){
        class DrawPanel extends JPanel{
           public void paintComponent(Graphics g) {
              super.paintComponent(g);
              g.setColor(Color.orange);
              g.drawRect(20, 20, 100, 60);
           }
        }

        RandomRec test = new RandomRec();
        test.go();
    }
}

これに関するヘルプは大歓迎です。

ありがとうございました。

*更新*問題が解決しました! go() メソッドをメイン メソッドの外に移動し、frame.add(panel) を追加し、frame.setVisible(true) を go() メソッドの下部に移動します (具体的には、パネルが追加された後に移動します)。フレーム) が問題を分類しました。ありがとうございました。

4

2 に答える 2

4

クラスDrawPanelはメソッドのスコープに限定されておりmain、コンストラクターからは見えません。

メソッドから移動DrawPanelしてから、次のmainように追加する必要がありますJFrame

frame.add(panel);

frame.setVisible(true)また、すべてのコンポーネントが追加された後に呼び出すことをお勧めします。

于 2012-11-15T19:08:20.513 に答える
2

パネルを実際にフレームに追加することはないため、表示されることはありません。次のようなものが必要です

frame.getContentPane().add( panel );

main メソッド内で drawpanel クラスを定義しているのはなぜですか? それはかなり奇妙です。

于 2012-11-15T19:09:29.993 に答える