gpt4 book ai didi

带有按钮的 Java GUI 华氏/摄氏转换器

转载 作者:行者123 更新时间:2023-11-29 05:29:41 24 4
gpt4 key购买 nike

我是 Java GUI 的初学者,在类里面我需要制作一个程序,将华氏温度转换为摄氏温度,反之亦然。我想制作一个使用按钮的 GUI 程序,但在网上找不到任何对我有帮助的帖子。我在按钮实际工作正常时遇到了问题。它可以将华氏度转换为摄氏度,但不会将摄氏度转换为华氏度。我知道逻辑上有一个明显的错误,但我一辈子都弄不明白。任何帮助将不胜感激。

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

@SuppressWarnings("serial")
public class Temperature_Converter extends JFrame{
private static final double CelsiusTOFarenheit = 9.0 / 5.0;
private static final double FahrenheitTOCelsius = 5.0 / 9.0;
private static final int offset = 32;
private JLabel LFahrenheit, LCelsius; //Labels
private JTextField TFFahrenheit, TFCelsius; //Text Fields
private JButton BConvert; //Convert Button
private ConvertButtonHandler ConvButtonHandler;

public Temperature_Converter() {
setTitle("Temperature Converter");
Container pane = getContentPane();
pane.setLayout(new GridLayout(1,5));

LFahrenheit = new JLabel("Farenheit:", JLabel.CENTER);
pane.add(LFahrenheit);
TFFahrenheit = new JTextField();
pane.add(TFFahrenheit);
BConvert = new JButton("Convert");
pane.add(BConvert);
ConvButtonHandler = new ConvertButtonHandler();
BConvert.addActionListener(ConvButtonHandler);
LCelsius = new JLabel("Celsius:", JLabel.CENTER);
pane.add(LCelsius);
TFCelsius = new JTextField();
pane.add(TFCelsius);

setSize(600, 85);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private class ConvertButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
double celsius = 0, fahrenheit = 0;

DecimalFormat twoDigits = new DecimalFormat("0.00");
celsius = Double.parseDouble(TFCelsius.getText());
fahrenheit = Double.parseDouble(TFFahrenheit.getText());
celsius = (fahrenheit - offset) * FahrenheitTOCelsius;
fahrenheit = celsius * CelsiusTOFarenheit + offset;
TFCelsius.setText(" "+ twoDigits.format(celsius));
TFFahrenheit.setText(" "+ twoDigits.format(fahrenheit));
}
}

public static void main(String[] args) {
new Temperature_Converter();
}

最佳答案

以下内容可能对您有所帮助:将要填充的文本字段留空(如果要从摄氏度转换为华氏度,则留空华氏度)。

 @Override
public void actionPerformed(final ActionEvent e) {
double celsius = 0, fahrenheit = 0;
DecimalFormat twoDigits = new DecimalFormat("0.00");
if (Temperature_Converter.this.TFCelsius.getText() == null || "".equals(Temperature_Converter.this.TFCelsius.getText().trim())) {
// convert from fahrenheit to celsius
fahrenheit = Double.parseDouble(Temperature_Converter.this.TFFahrenheit.getText());
celsius = (fahrenheit - Temperature_Converter.offset) * Temperature_Converter.FahrenheitTOCelsius;
Temperature_Converter.this.TFCelsius.setText(" " + twoDigits.format(celsius));
} else if (Temperature_Converter.this.TFFahrenheit.getText() == null || "".equals(Temperature_Converter.this.TFFahrenheit.getText().trim())) {
// convert from celsius to fahrenheit
celsius = Double.parseDouble(Temperature_Converter.this.TFCelsius.getText());
fahrenheit = celsius * Temperature_Converter.CelsiusTOFarenheit + Temperature_Converter.offset;
Temperature_Converter.this.TFFahrenheit.setText(" " + twoDigits.format(fahrenheit));
}
}

编辑:您可以验证用户输入文本并提醒用户是否还有其他内容,然后将数字作为温度引入。

try {
fahrenheit = Double.parseDouble(Temperature_Converter.this.TFFahrenheit.getText());
} catch (NumberFormatException e1) {
//alert the user
JOptionPane.showMessageDialog(null, "You are allowed to introduce numbers only for temperature");
return;
}

关于带有按钮的 Java GUI 华氏/摄氏转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21546732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com