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
相关产品推荐
相关产品推荐

