Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取JTextField的值已更改_Java_Swing_Jtextfield_Temperature_Valuechangelistener - Fatal编程技术网

Java 获取JTextField的值已更改

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

我正在制作一个转换温度的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 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。您需要为JTextField
deg实现相同的ActionListener


或者,您可以尝试编写代码,以便在获取文本字段的事件时,可以使用
postActionEvent

将事件发布到按钮。当前,您的convert按钮上连接了一个ActionListener。您需要为JTextField
deg实现相同的ActionListener


或者,您可以尝试编写代码,以便在获取文本字段的事件时,可以使用
postActionEvent

将事件发布到按钮。当前,您的convert按钮上连接了一个ActionListener。您需要为JTextField
deg实现相同的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检查。当您删除和更改并且没有文本时。要避免空指针