3

私は Java Graphics の初心者です。JFrame にランダムなドットをプロットしようとしましたが、コンパイル時に Frame に何もない理由がわかりません。ロジックは問題ありません + エラーはありません。誰かがここで何が悪いのか助けてくれますか

public class parent extends JPanel {    

    public void PaintComponent (Graphics g)     
    {
        super.paintComponent(g);
        Graphics2D g2d  = (Graphics2D) g;
        g2d.setColor(Color.blue);
        Dimension size = getSize();
        Insets  insets= getInsets();
        int w =  size.width - insets.left - insets.right;
        int h =  size.height - insets.top - insets.bottom;
        Random r = new Random();

        for (int i=0; i<1000; i++) {
           int x = Math.abs(r.nextInt()) % w;
           int y = Math.abs(r.nextInt()) % h;
           g2d.drawLine(x, y, x, y);
        }
    }


    public static void main(String[] args) 
    {
        JFrame frame = new JFrame("Points");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new parent());
        frame.setSize(250, 200);
        frame.setVisible(true);
     }
} 
4

2 に答える 2

2

そうですかPaintComponent、そうあるべきpaintComponentですか?Java 開発者がどちらを選択するかはわかっていると思います。

これは、@Override注釈で Eclipse でキャッチされる完全なバグであることに注意してください。

于 2012-10-31T19:54:08.573 に答える
0

コードから、DrawLine を使用して (x, y) から (x, y) に描画しています。これは単一のピクセルになります。そして、あなたはカラーブルーを設定しました。したがって、色に関係なく、あまり目立ちません。

しかし、それとは別に、ループは乱数 R に基づいて X と Y の値を計算しますが、R が新しい乱数として再計算されることはありません (ループの前に一度設定し、リセットすることはありません)。そのため、同じポイントを何度も 1,000 回再プロットします。

乱数計算をループ内に配置して、ランダム ポイントの周りに半径 5 ~ 10 ピクセルの円を描くと、より見やすくなります。そして、あなたはあなたの目標を達成する道を進んでいるはずです.

于 2012-10-31T20:01:01.140 に答える