2

このプログラムには 2 つのラジオ ボタンがあります。1: 円、2: 正方形を出力します。

このプログラムは基本的に、ラジオ ボタン グループに基づいて円または正方形を出力するように設計されています。

私の問題は、形状を出力するためにボタンにアクションリスナーを実装する方法がわからないことです。メソッド fm を呼び出したときに、ラジオ ボタンの初期化中にエラーが発生しました。どうやらメインメソッドが必要だと思います。

これは Java AWT であることに注意してください。

詳細を追加したり、明確にしたい場合は、コメントしてください。

    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import java.applet.Applet;

    public class RadioButton extends Applet
implements ActionListener
    {
        int choice;

        Frame fm = new Frame ("RadioButton Group");
        Label la = new Label ("What shape do you want to draw?:");
        fm.setLayout (new GridLayout (0, 1));
        CheckboxGroup cg1 = new CheckboxGroup ();
        fm.add (la);

        fm.add (new Checkbox ("CIRCLE", cg1, true));
        fm.add (new Checkbox ("SQUARE", cg1, true));

        fm.setSize (250, 200);
        fm.setVisible (true);
        fm.addWindowListener (new WindowAdapter ()


        {

            public void paint (Graphics g)  // How can you 'update the drawing' or repaint it?
            {
                switch (choice) // Maybe for colors if all else fails you can add a switch 'within' a switch. Inefficient-yes but helps.
                {
                    case 1:
                        if (choice == 1)
                            g.fillOval (30, 40, 20, 20);

                    case 2:
                        if (choice == 2)
                            g.fillRect (20, 40, 20, 20);
                        break;
                }
            }
            public void actionPerformed (ActionEvent evt)
            {
                if (evt.getSource () == "CIRCLE")
                    choice = 1;
                else
                    choice = 2;
            }
            public void windowClosing (WindowEvent we)
            {
                System.exit (0);
            }
        }


        );
    }
    }
4

1 に答える 1

2

アイテムリスナーを使用できます。これは完全な実例です:

import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;


import javax.swing.JFrame;


public class Project1 extends JFrame implements ItemListener {

    CheckboxGroup cg1 = new CheckboxGroup ();       //create group
    Checkbox c1 = new Checkbox("Circle",cg1,true);  //circle button
    Checkbox c2 = new Checkbox("Square",cg1,true);  //square button

    public Project1() {
        setLayout(new FlowLayout());        

        //add listeners
        c1.addItemListener(this);
        c2.addItemListener(this);

        //add to frame
        add(c1);
        add(c2);

        //set visible
        this.setVisible(true);
    }


    @Override
    public void itemStateChanged(ItemEvent e) 
    {
        //c1 = circle
        //c2 = square
        if(e.getSource() == c1)
            System.out.println("Circle");
        else
            System.out.println("Square");

    }

    public static void main(String[] args) {
        Project1 p = new Project1();
    }
}

これを.javafullに保存して実行します。あなたが探していることを達成する方法のまともな例をあなたに与えるべきです。

于 2013-03-06T16:09:10.630 に答える