You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Swing温度转换器出现JLabel、FTextField等报错如何解决

温度转换器Swing程序错误修复方案

现存错误列表

  • 类名不符合Java规范:Main.java中类名定义为main,Java公共类名首字母需大写,且文件名必须与类名完全一致
  • 组件类名拼写错误1:代码中使用了不存在的FTextField类,Swing标准文本输入组件为JTextField,与你导入的类一致
  • 组件类名拼写错误2:Jlabel拼写错误,正确写法为JLabel(L大写),与你导入的类一致
  • 无效语法错误:代码中出现1.setHgap(10)等以数字1调用方法的无效语句,属于变量定义失误
  • 布局设置重复:先后两次调用frmJanela.setLayout,逻辑冗余

修复后代码

Main.java

package swing;

// 类名首字母大写,文件名需同步改为Main.java
public class Main {
    public static void main(String[] args) {
        ConversorTemperatura ct = new ConversorTemperatura();
        ct.exibir();
    }
}

ConversorTemperatura.java

package swing;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.GridLayout;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ConversorTemperatura {
    private JFrame frmJanela;
    // 替换不存在的FTextField为JTextField
    private JTextField txtFah;
    private JLabel lblFah;
    private JButton btnConverter;
    // 修正Jlabel拼写为JLabel
    private JLabel lblCelsius;
    
    public void exibir() {
        frmJanela.setVisible(true);
    }
    
    public ConversorTemperatura() {
        frmJanela = new JFrame();
        frmJanela.setTitle("Conversor Fahrenheit p/ Celsius");
        frmJanela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmJanela.setLocationRelativeTo(null);
        JPanel p = new JPanel();
        p.setBorder(new EmptyBorder (10,10,10,10));
        frmJanela.setContentPane(p);
        
        // 修正布局设置逻辑,删除无效的数字1调用语句
        GridLayout layout = new GridLayout(2, 2);
        layout.setHgap(10);
        layout.setVgap(10);
        frmJanela.setLayout(layout);
        
        txtFah = new JTextField();
        txtFah.setColumns(5);
        frmJanela.add(txtFah);
        
        lblFah = new JLabel();
        lblFah.setText("Fahrenheit");
        frmJanela.add(lblFah);
        
        btnConverter = new JButton();
        btnConverter.setText("Converter");
        frmJanela.add(btnConverter);
        
        lblCelsius = new JLabel();
        lblCelsius.setText("Celsius");
        frmJanela.add(lblCelsius);

        // 新增温度转换逻辑,点击按钮触发计算
        btnConverter.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    double fahrenheit = Double.parseDouble(txtFah.getText());
                    double celsius = (fahrenheit - 32) * 5 / 9;
                    lblCelsius.setText(String.format("%.2f Celsius", celsius));
                } catch (NumberFormatException ex) {
                    lblCelsius.setText("请输入有效数字");
                }
            }
        });
        
        frmJanela.pack();
    }
}

修复验证

修改后编译运行代码,窗口可正常弹出,输入华氏温度点击转换按钮即可得到对应的摄氏温度结果,输入非数字内容会给出友好提示。

内容的提问来源于stack exchange,提问作者Bruno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:36:04