2016-11-13 3 views
0

Я хочу изменить фон кадра на основе выбранного переключателя. Это нужно сделать с помощью AWT. Текущий код просто меняет цвет на синий. При нажатии на зеленый ничего не меняется.AWT Radio Button

import java.awt.*; 
import java.awt.event.*; 

class A extends Frame implements ItemListener 
{ 
    Checkbox c1,c2; 
    CheckboxGroup cbg; 
    A() 
    { 
     setLayout(new FlowLayout()); 
     cbg= new CheckboxGroup(); 
     c1= new Checkbox("Blue",cbg,false); 
     c2= new Checkbox("Green",cbg,true); 
     this.add(c1); 
     this.add(c2); 
     c1.addItemListener(this); 
     c2.addItemListener(this); 
    } 

    public void itemStateChanged(ItemEvent e) 
    { 
     if(e.getStateChange()==ItemEvent.SELECTED) 
      this.setBackground(Color.BLUE); 
     else if(e.getStateChange()==ItemEvent.SELECTED) 
      this.setBackground(Color.Green); 
     else 
      this.setBackground(Color.BLACK); 
    } 

    public static void main(String[] args) 
    { 
     A a= new A(); 
     a.setSize(500,500); 
     a.setTitle("ME"); 
     a.setVisible(true); 
     a.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent we){System.exit(0);} 
     }); 
    } 
} 
+0

* «Это должно быть сделано с использованием AWT.» * .. Почему? –

+0

'this.setBackground (Color.Green);' должен быть либо 'this.setBackground (Color.GREEN);' *** или *** (для поддержки JRE до 1.4.2) 'this.setBackground (Цвет. зеленый); '. Вы используете Eclipse и игнорируете предупреждения компилятора? –

ответ

1

Основная проблема (помимо й ошибки компиляции) является то, что условие if и else if идентичны. Возможно, лучше проверить источник события и сравнить его с c1 или c2.

Обратите внимание, что если должна быть опция «черный», необходимо установить третий флажок.