2013-12-25 6 views
0

Я делаю небольшой Java Swing апплет, который преобразует температуру: TempConvert.javaПолучить Значение JTextField Изменено

Вот мой код:

package swing; 

import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 

/** Celcius to Fahrenheit Converter 
* @version 1.0 
* @author Oliver Ni 
*/ 

public class TempConvert extends JApplet{ 
    JLabel result; 
    JRadioButton ctof; 
    JRadioButton ftoc; 
    JTextField deg; 
    JLabel degLab; 
    JButton convert; 

    public void convert() { 
     if (ctof.isSelected() == true) { 
      result.setText("<html><br>" + Integer.toString(Integer.parseInt(deg.getText()) * 9/5 + 32) + "<sup>o</sup> F</html>"); 
     } else if (ftoc.isSelected() == true) { 
      result.setText("<html><br>" + Integer.toString((Integer.parseInt(deg.getText()) - 32) * 5/9) + "<sup>o</sup> C</html>"); 
     } else { 
      result.setText("<html><br>Error.</html>"); 
     } 
    } 

    public void makeApplet() { 
     setLayout(new FlowLayout()); 
     ctof = new JRadioButton("Celcius to Fahrenheit"); 
     ftoc = new JRadioButton("Fahrenheit to Celcius"); 
     convert = new JButton("Convert"); 
     result = new JLabel(""); 
     ButtonGroup group = new ButtonGroup(); 
     group.add(ctof); 
     group.add(ftoc); 

     deg = new JTextField(10); 
     degLab = new JLabel("<html><sup>o</sup></html>"); 
     convert.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent ae) { 
       convert(); 
      } 
     }); 
     add(ctof); 
     add(ftoc); 
     add(deg); 
     add(degLab); 
     add(convert); 
     add(result); 
    } 

    public void init() { 
     try { 
      SwingUtilities.invokeAndWait(new Runnable() { 
       public void run() { 
        makeApplet(); 
       } 
      }); 
     } catch(Exception e) { 
      System.out.println("Error loading because " + e); 
     } 
    } 
} 

Я хочу, чтобы вызвать функцию convert() каждый раз, когда текст в JTextFielddeg изменен. Есть ли способ сделать это?

Любая помощь будет оценена!

+0

Вы уже добавили ActionListener к своей кнопке конвертирования - разве это не все, что вам нужно сделать? –

+0

Это задание? И если да, то у вас есть особые требования? И если да, отправьте их, а также попытайтесь решить эту проблему. Если бы это была моя программа, первое, что я сделал бы, это сделать ее более надежной: разрешить двойную числовую запись, использовать JFormattedTextField, чтобы разрешить только числовую запись, а затем довольно макет GUI. –

ответ

2

Нужен добавить слушатель TextField. Добавьте следующий фрагмент, и он должен работать.

deg.getDocument().addDocumentListener(new DocumentListener() { 
    public void changedUpdate(DocumentEvent e) { 
     convert(); 
    } 
    public void removeUpdate(DocumentEvent e) { 
     convert(); 
    } 
    public void insertUpdate(DocumentEvent e) { 
     convert(); 
    } 
}); 
+0

+1 Добавьте нулевые проверки. когда вы удаляете и изменяете, а текст отсутствует. Чтобы избежать путаницы –

1

В настоящее время у вас есть ActionListener, прикрепленный к вашей кнопке конвертирования. Вы должны реализовать то же ActionListener для JTextField deg

Или вы код попробовать так, что, когда вы получаете событие для текстового поля проводки события на кнопку с помощью postActionEvent

Смежные вопросы