0

画面に円を描き、3 つのボタン (赤、黄、緑) を表示し、ボタンをクリックすると、それに応じて円の塗りつぶしの色が変わるプログラムを作成しようとしています。

近いと思いますが、円を描いて色を変えるメソッドを実際に作成する方法がわかりません。円を描いて塗りつぶすメソッドを書くことができます jbutton とのマージに問題があります

これは私がこれまでに持っているものです:

(未使用のインポートは無視してください)


別のアプローチを採用しましたが、それがより良いかどうかはわかりません。私のボタンが表示され、すべてが色の変更に問題があります。実は今、円を表示することさえできません。イベントハンドラーを呼び出す必要があることはわかっていますrepaint();が、その方法がわかりません。これは、日曜日にビデオを見たり、例を読んだりするのに非常に多くの時間を費やしたためです。私はそれがばかげていると確信していますが、それは私をイライラさせます!

  public class test3 extends JPanel {

JRadioButton RED, YELLOW, GREEN; 
Color currentColor;          


public void paintComponent(Graphics g){

    currentColor= Color.RED; 

        super.paintComponent(g);
        this.setBackground(Color.WHITE);

        g.setColor(currentColor);
        g.fillOval(50, 50, 100, 100);    
       }






public static void main(String[] args) {

  test3 frame = new test3();
  frame.setSize(500,500);

  frame.setVisible(true);
    }

public test3 (){

JPanel jpRadioButtons=new JPanel();
jpRadioButtons.setLayout(new GridLayout(1,1));
jpRadioButtons.add(RED=new JRadioButton("RED"));
jpRadioButtons.add(GREEN=new JRadioButton("GREEN"));
jpRadioButtons.add(YELLOW=new JRadioButton("YELLOW"));

add(jpRadioButtons, BorderLayout.SOUTH);


ButtonGroup group=new ButtonGroup();
group.add(RED);
group.add(YELLOW);
group.add(GREEN);

GREEN.addActionListener(new ActionListener()
{
    public void actionPerormed(ActionEvent e)
    {        

        currentColor = Color.GREEN;
     repaint();           
    }
      });

   }
}
4

1 に答える 1

1
  1. クラス変数/プロパティ/... を円の現在の色で導入します。
  2. イベントハンドラでこの変数を設定します
  3. 「repaint();」も呼び出す あなたのイベントハンドラで
  4. メソッドをオーバーライドしてpaintComponent()、クラス変数から読み取ることができる色で円を描くようにします。

次のpaintComponent(Graphics g)ようになります。

@Override
void paintComponent(Graphics g)
{
  g.setColor(currentColor);
  g.drawOval(50,50,100,100);
}
于 2012-11-01T00:56:52.863 に答える