2013-03-05 255 views
2

該程序有2個單選按鈕。 1:一個圓圈,2:輸出一個正方形。Java-使用AWT添加單選按鈕?

這個程序基本上是設計爲輸出圓形或方形的單選按鈕組。

我的問題是,我不知道如何在按鈕上實現一個動作偵聽器,以便輸出形狀。當我調用方法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); 
      } 
     } 


     ); 
    } 
    } 
+0

我該如何解決這個問題? – 2013-03-06 00:49:34

回答

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(); 
    } 
} 

將其保存爲.java並且運行它。應該給你一個體面的例子,說明你如何完成你的期望。