0

Javaでペイントプログラムを作成する割り当てがあります。私はなんとか何かを作成することができましたが、私が望んでいたものとは正確には一致しませんでした。

私の問題は、IDEが提供するオプションからIDE(NetBeans 7.0.1)でJFrameを作成できず、ペイントクラスを正しく呼び出せないことです。

具体的には、1つのパネル(例:Panel1)からボタンを押して、同じフレームのPanel2にペイントします。

それがクラスの呼びかけです:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    PaintFlower102 f = new PaintFlower102();
}

クラスの一部:

    super("Drag to Paint");
    getContentPane().add(new Label ("Click and Drag"),BorderLayout.SOUTH);
    // add(new JButton("Brush 20"),BorderLayout.NORTH);
    addMouseMotionListener( new MouseMotionAdapter() {

        @Override
        public void mouseDragged(MouseEvent event) {
            xval=event.getX();
            yval=event.getY();
            repaint();
        }
    });

    setSize(500, 500);
    setVisible(true);
    setDefaultCloseOperation(PaintFlower102.DISPOSE_ON_CLOSE);
}

public void paint(Graphics g) {      
    g.fillOval(xval, yval, 10, 10);   
}

問題は、クラスに入れないとextend JFrame、これが機能しないことです。そうすると、描画できる新しいフレームが作成されます。

4

2 に答える 2

7

提案:

  • 絶対に必要なまれな状況を除いて、JFrameで直接ペイントしないでください(これはそれらの1つではありません)。
  • 代わりに、JPanel、JComponent、またはJComponentの他の派生物でペイントします。
  • ではなく、クラスのpaintComponent(Graphics g)メソッドでペイントしpaint(Graphics g)ます。
  • すべてがそこでよく説明されているので、これに関するJavaチュートリアルを読んでください。Trail:2D Graphics and PerformingCustomPaintingをチェックしてください。
于 2012-04-24T15:51:33.917 に答える
0

私は間違っているかもしれませんが、super.paintComponent(g)をインクルードし、Hovercraft FullOfEelsが言ったようにpaintComponentメソッドをオーバーライドする必要があると思います。

public void paintComponent(Graphics g) {
    super.paintComponent(g);       

    // Draw Oval
   g.fillOval(xval, yval, 10, 10);
}  
于 2012-04-25T23:24:12.980 に答える