1

使用しなくてsuper.paintComponent(g);も、Jpanel または Jframe 画面をクリアできますか? JPanel に描画された図形があり、このメソッドを使用せずにユーザーが右クリックを押したときにすべての描画をクリアしたい。または、 Javasuper.paintCompenent(g)のような方法または方法の代替手段があると思います。clrscr();

編集

  public void mousePressed(MouseEvent e) {
            super.paintComponents(null); //i want to use this method here?? how can i? 
            if(e.isPopupTrigger())
            {
                s=e.getX();
                as=e.getY();
              try {
                    Thread.sleep(10L);
                } catch (InterruptedException ex) {
                    Logger.getLogger(animate.class.getName()).log(Level.SEVERE, null, ex);
                }
        p.repaint();
            }
        }

私はこのような形を描いています

public class mypanel extends JPanel {

   @Override
    public void paintComponent(Graphics g)
    {

       super.paintComponent(g);
        Graphics2D g2=(Graphics2D)g ;

        Color[] c = {Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW, 
                 Color.MAGENTA, Color.WHITE, Color.ORANGE, Color.PINK};
    for(int i=0; i<8; ++i){
        g2.setColor(c[i]);
        int start_angle=i*45;
    g2.fillArc(mx-100, my-100, 200, 200, start_angle,45);



    }
4

2 に答える 2

6

mre ソリューションは実際には良いアイデアですが、別の再描画が行われると問題が発生する可能性があります (JFrame を移動するため、サイズを変更するため、別のウィンドウがその上に表示されてから離れるなど...)

または、次のようなものを使用して、変更を永続的にすることができます。

public class mypanel extends JPanel {

    private boolean draw = true;

    @Override
    public void paintComponent(Graphics g)
    {

        super.paintComponent(g);
        if (draw) {
            Graphics2D g2=(Graphics2D)g ;

            Color[] c = {Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW, 
                     Color.MAGENTA, Color.WHITE, Color.ORANGE, Color.PINK};
            for(int i=0; i<8; ++i){
                g2.setColor(c[i]);
            int start_angle=i*45;
            g2.fillArc(mx-100, my-100, 200, 200, start_angle,45);
        }
    }

    public void setDraw(boolean draw) {
        this.draw = draw;
        repaint();
    }
}

そして、 mypanel.setDraw(boolean) を呼び出して、JPanel simlpy で描画するかどうかを指定できます。

于 2012-04-08T17:12:20.900 に答える
4

おそらくGraphics#clearRectあなたが探しているものですか?

于 2012-04-08T17:01:16.350 に答える