Java 获取JTextField的值已更改
我正在制作一个转换温度的java Swing小程序:TempConvert.java 这是我的密码:Java 获取JTextField的值已更改,java,swing,jtextfield,temperature,valuechangelistener,Java,Swing,Jtextfield,Temperature,Valuechangelistener,我正在制作一个转换温度的java Swing小程序:TempConvert.java 这是我的密码: 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 cla
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);
}
}
}
package-swing;
导入javax.swing.*;
导入javax.swing.event.*;
导入java.awt.*;
导入java.awt.event.*;
/**Celcius至华氏转换器
*@version 1.0
*@作者奥利弗·尼
*/
公共类tempplet{
JLabel结果;
JRadioButton-ctof;
JRadioButton ftoc;
JTextField度;
JLabel-degLab;
按钮转换;
公共void convert(){
if(ctof.isSelected()==true){
result.setText(“
”+Integer.toString(Integer.parseInt(deg.getText())*9/5+32)+“of”);
}else if(ftoc.isSelected()==true){
result.setText(“
”+Integer.toString((Integer.parseInt(deg.getText())-32)*5/9)+“oc”);
}否则{
result.setText(“
错误”);
}
}
公共void makeApplet(){
setLayout(新的FlowLayout());
ctof=新JRadioButton(“Celcius到华氏度”);
ftoc=新的JRadioButton(“华氏度到摄氏度”);
convert=新的JButton(“convert”);
结果=新的JLabel(“”);
ButtonGroup=新建ButtonGroup();
添加组(ctof);
添加组(ftoc);
deg=新的JTextField(10);
degLab=新的JLabel(“o”);
convert.addActionListener(新ActionListener(){
已执行的公共无效行动(行动事件ae){
convert();
}
});
添加(ctof);
添加(ftoc);
添加(度);
添加(degLab);
添加(转换);
添加(结果);
}
公共void init(){
试一试{
SwingUtilities.invokeAndWait(新的Runnable(){
公开募捐{
makeApplet();
}
});
}捕获(例外e){
System.out.println(“加载错误,因为“+e”);
}
}
}
每次更改JTextField
deg
中的文本时,我都要调用convert()
函数。我有办法做到吗
任何帮助都将不胜感激 当前,您的convert按钮上连接了一个ActionListener。您需要为JTextField
deg实现相同的ActionListener
或者,您可以尝试编写代码,以便在获取文本字段的事件时,可以使用postActionEvent
将事件发布到按钮。当前,您的convert按钮上连接了一个ActionListener。您需要为JTextFielddeg实现相同的ActionListener
或者,您可以尝试编写代码,以便在获取文本字段的事件时,可以使用postActionEvent
将事件发布到按钮。当前,您的convert按钮上连接了一个ActionListener。您需要为JTextFielddeg实现相同的ActionListener
或者,您可以尝试编写代码,以便在获取文本字段的事件时,可以使用postActionEvent
将事件发布到按钮。当前,您的convert按钮上连接了一个ActionListener。您需要为JTextFielddeg实现相同的ActionListener
或者,您可以尝试编写代码,以便在获取textfield的事件时,使用postActionEvent
将侦听器添加到textfield,将事件发布到按钮。添加以下代码段,它应该可以工作
deg.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
convert();
}
public void removeUpdate(DocumentEvent e) {
convert();
}
public void insertUpdate(DocumentEvent e) {
convert();
}
});
需要将侦听器添加到文本字段。添加以下代码段,它应该可以工作
deg.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
convert();
}
public void removeUpdate(DocumentEvent e) {
convert();
}
public void insertUpdate(DocumentEvent e) {
convert();
}
});
需要将侦听器添加到文本字段。添加以下代码段,它应该可以工作
deg.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
convert();
}
public void removeUpdate(DocumentEvent e) {
convert();
}
public void insertUpdate(DocumentEvent e) {
convert();
}
});
需要将侦听器添加到文本字段。添加以下代码段,它应该可以工作
deg.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
convert();
}
public void removeUpdate(DocumentEvent e) {
convert();
}
public void insertUpdate(DocumentEvent e) {
convert();
}
});
您已经在转换按钮中添加了ActionListener——这不是您需要做的全部吗?这是一个任务吗?如果有,你有具体的要求吗?如果是这样,请发布它们,以及您试图解决当前问题的代码。如果这是我的程序,我要做的第一件事就是让它更健壮:允许双数字输入,使用JFormattedTextField只允许数字输入,然后优化GUI布局。您已经在转换按钮中添加了一个ActionListener——您不就需要这么做吗?这是一个分配吗?如果有,你有具体的要求吗?如果是这样,请发布它们,以及您试图解决当前问题的代码。如果这是我的程序,我要做的第一件事就是让它更健壮:允许双数字输入,使用JFormattedTextField只允许数字输入,然后优化GUI布局。您已经在转换按钮中添加了一个ActionListener——您不就需要这么做吗?这是一个分配吗?如果有,你有具体的要求吗?如果是这样,请发布它们,以及您试图解决当前问题的代码。如果这是我的程序,我要做的第一件事就是让它更健壮:允许双数字输入,使用JFormattedTextField只允许数字输入,然后优化GUI布局。您已经在转换按钮中添加了一个ActionListener——您不就需要这么做吗?这是一个分配吗?如果有,你有具体的要求吗?如果是这样,请发布它们,以及您试图解决当前问题的代码。如果这是我的程序,我要做的第一件事就是让它更健壮:允许双数字输入,使用JFormattedTextField只允许数字输入,然后重新整理GUI布局。+1添加空检查。当您删除和更改并且没有文本时。要避免nullpointer+1,请添加null检查。当您删除和更改并且没有文本时。要避免nullpointer+1,请添加null检查。当您删除和更改并且没有文本时。要避免nullpointer+1,请添加null检查。当您删除和更改并且没有文本时。要避免空指针