Я новичок в Java GUI, и для класса мне нужно создать программу, которая преобразует Фаренгейта в цель и наоборот. Я хотел сделать программу GUI, которая использовала кнопку, но не может найти никаких сообщений в Интернете, которые мне помогли. У меня возникают проблемы с правильной работой кнопки. Он преобразуется из Фаренгейта в Цельсий в порядке, но не будет конвертировать Цельсия в Фаренгейт. Я знаю, что в логике есть явная ошибка, но я не могу понять, насколько я это понимаю. Любая помощь приветствуется.Java GUI Fahrenheit/Celsius Converter с кнопкой
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();
}
}
Это было здорово. Он полностью исправил мою проблему. Я знал, что должно было быть утверждение if где-то, я просто не знал, как это сделать. Моя логика CS по-прежнему не самая лучшая. Благодаря! – Mowza2k2
@ Mowza2k2 вы разрабатываете свою логику CS, делая такие проблемы. Продолжайте движение, и вы многое продвинетесь. Кстати, просмотрите часть редактирования сообщения для удобного оповещения. – Daniel
большое спасибо. Все, что вы опубликовали, имело для меня смысл, хотя я не знал, как это сделать сам. Приятно иметь куда пойти, где я могу получить помощь (без прослушивания моего профессора). – Mowza2k2