1

「City」というオブジェクトを作成します

    City city = new City (name, rec, g);

オブジェクトのコンストラクタは次のようになります。

    public City (String name, Rectangle r, Graphics g){
    this.name = name; 
    this.r = r;
    this.g = g; 
    }

このオブジェクトを作成することで、アップロードされた画像に楕円形も描画し、その色を BLUE に設定します。オブジェクトを描画する方法は次のとおりです。

    g = (Graphics2D) window.lblNewLabel.getGraphics();
        g.setColor(Color.BLUE);
        g.fillOval(mouseX, mouseY, 15, 15);

楕円自体をクリックした後、後でその色を変更できるようにしたいと思います。この関数を呼び出そうとしましたが、機能しません:

        public void isClicked(){
    clicked = true;
    this.color = Color.RED;
    this.g.setColor(Color.PINK);

}

既存のオブジェクトの色を変更するには?

4

3 に答える 3

6

コンポーネントでを使用getGraphics()すると、一時的なグラフィック オブジェクトがコンポーネント自体で使用されます。後続の への呼び出しはrepaint、そのオブジェクトを使用して行われたペイントを消去します。

paintComponentメソッドをオーバーライドして色を変更します。Color変数をクラス メンバー変数として保存し、それを使用してメソッドで楕円形の色を決定します。

@Override
protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   g.setColor(savedColor);
   g.fillOval(mouseX, mouseY, 15, 15);
}
于 2013-08-11T15:53:27.073 に答える
3

ペイントには使用getGraphics()しないでください。このペイントは一時的なものであり、次に Swing がコンポーネントを再ペイントする必要があると判断したときに失われます。

ペイントの他のアイデアについては、Playing With Shapesをご覧ください。

ShapeIconアイコンの色を変更できる を使用できます。アイコンは、ラベルの paintComponent() メソッドでペイントできます。

ShapeComponentまたは、ShapeIcon を使用するものを使用することもできます。次に、他のコンポーネントと同様に、コンポーネントをラベルに追加するだけです。

楕円自体をクリックした後、後でその色を変更できるようにしたいと思います

ShapeIcon は JLabel に追加されます。次に、MouseListener を ShapeComponent のラベルに追加して、アイコンの色を変更できます。

于 2013-08-11T15:53:36.417 に答える