0

ここで少し前に同様の質問をしましたが、答えが得られませんでした。元の質問は、クリック後に図形の色を変更することでした。しかし、描画した後の形状にアクセスする方法に戸惑っています。

これは私の paintComponent メソッドです

    @Override
protected void paintComponent(Graphics graph) {
    super.paintComponent(graph);
    Graphics2D g = (Graphics2D) graph;
    // smooth graphics
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    // moving to the middle of the panel
    g.translate(this.getWidth()/2, this.getHeight()/2);

    // painting colored arcs
    for(int i = 0; i < 4; i++) {
        g.setColor(dimColors[i]);
        g.fill(arcs[i]);            
    }

    // painting borders
    g.setColor(Color.BLACK);
    g.setStroke(new BasicStroke(5F));
    g.drawLine(-98, 0, 98, 0);
    g.drawLine(0, -98, 0, 98);      
    g.draw(circle);     

    // painting central white circle
    g.setColor(Color.WHITE);
    g.fill(smallCircle);        
    g.setColor(Color.BLACK);
    g.draw(smallCircle);    

}

arcs[] 配列には、パネルに描画される Arc2D の束が含まれています。私の質問は、たとえば arcs[0] の色を変更したい場合、どうすればよいですか?

ありがとう!

編集:私は今、この MouseAdapter イベントを持っています

     private class MyMouseAdapter extends MouseAdapter {
     public void mousePressed(MouseEvent e) {

         Point p = e.getPoint();
         Component c = getComponentAt(p);

         Graphics g = c.getGraphics();

         dimColors[1] = Color.RED;

         paintComponent(g);

     }
 }

arcs[1] には、描画時に色として設定された dimColors[1] があるため、arc[1] の色が変更されます。

ただし、右の弧がクリックされたかどうかを確認する方法はまだわかりません。現在、グラフィック パネルの任意の場所をクリックするだけで、その特定の円弧の色が変わります

4

2 に答える 2

1

たとえば arcs[0] の色を変更したい場合、どうすればよいですか?

線 (または何でも) は、元の色でペイントされたピクセルの集まりとしてのみ存在します。色を変更するには、現在の色を変更して再度描画する必要があります。

于 2011-11-20T13:18:34.827 に答える