2015-11-14 5 views
1

Я пытаюсь создать простую программу, которая изменяет текст в некоторых текстовых полях при нажатии определенной кнопки. Это мой первый раз с Java, поэтому я не уверен, что я пропустил. Вот мой код.java objects, and frame not working

public abstract class DoctorOption extends JFrame implements ActionListener { 
    JTextField myTxt = new JTextField(30); 
    JButton submit = new JButton("Submit"); 
    JRadioButton mywellRB = new JRadioButton("click here if you are well", true); 
    JRadioButton myunwellRB = new JRadioButton("click here if you are unwell", false); 

    public static void main(String[] args) { 
     new DoctorOption() { 
     }; 
    } 

    public DoctorOption() { 
     setSize(400, 120); 
     setTitle("Doctor Option"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 

     add(myTxt); 
     add(mywellRB); 
     add(myunwellRB); 
     add(submit); 
     submit.addActionListener(this); 
     myunwellRB.addActionListener(this); 
     mywellRB.addActionListener(this); 
     setVisible(true); 

     ButtonGroup buttons = new ButtonGroup(); 
     buttons.add(mywellRB); 
     buttons.add(myunwellRB); 
    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == mywellRB) { 
      myTxt.setText("in the pink! "); 
      myTxt.setBackground(Color.pink); 
     } 
    } 
} 

Пожалуйста, не могли бы вы помочь мне понять, что я сделал неправильно, спасибо!

ответ

3

Проблема я вижу, что вы не используете какой-либо макет, который означает, что он будет по умолчанию BorderLayout , BorderLayout по умолчанию помещает все в BorderLayout.CENTER, поэтому вы увидите, что одна вещь занимает все окно. Поместите эту строку кода в конструкторе:

setLayout(new FlowLayout()); 

For more info on Layouts

0

Вы реализуете ActionListener интерфейс, так что вам нужно реализовать actionPerformed method.Change ваш главный метод, как этот

public static void main(String[] args) { 
    new DoctorOption(){ 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // put relevant code here 

     }}; 
}