Java:actionlistener和检索文本框输入的问题

Java:actionlistener和检索文本框输入的问题,java,swing,awt,jbutton,actionlistener,Java,Swing,Awt,Jbutton,Actionlistener,我正在做一项作业,我需要把华氏温度转换成摄氏温度。我已经创建了表单和actionlistener按钮 我遇到的问题是将代码放在actionlistener中以检索文本框输入并进行计算,然后将其缩减到小数点后两位,并将答案发布到文本框中 这就是我到目前为止所做的: import java.util.Scanner; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java

我正在做一项作业,我需要把华氏温度转换成摄氏温度。我已经创建了表单和actionlistener按钮

我遇到的问题是将代码放在actionlistener中以检索文本框输入并进行计算,然后将其缩减到小数点后两位,并将答案发布到文本框中

这就是我到目前为止所做的:

 import java.util.Scanner;
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;


 public class Part3Question1 extends JFrame implements ActionListener {

     public static void main(String[] args) {
         JFrame mp = new Part3Question1();
         mp.show();
     }

     public Part3Question1() {
         setTitle("My Farenheit to Celsius Converter");
         setSize(400, 250);
         setLocation(400, 250);
         setVisible(true);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         setLayout(null);

         JLabel fahrenheitLabel = new JLabel();
         fahrenheitLabel.setText("Fahrenheit: ");
         fahrenheitLabel.setBounds(130, 40, 70, 20);
         add(fahrenheitLabel);

         JTextField fahrenheitTB = new JTextField();
         fahrenheitTB.setHorizontalAlignment(fahrenheitTB.RIGHT);
         fahrenheitTB.setBounds(200, 40, 70, 20);
         add(fahrenheitTB);

         JLabel celsiusLabel = new JLabel();
         celsiusLabel.setText("celsius: ");
         celsiusLabel.setBounds(149, 60, 70, 20);
         add(celsiusLabel);

         Color color = new Color(255, 0, 0);
         JTextField celsiusResultsTB = new JTextField();
         celsiusResultsTB.setText("resultbox ");
         celsiusResultsTB.setHorizontalAlignment(celsiusResultsTB.CENTER);
         celsiusResultsTB.setForeground(color);
         celsiusResultsTB.setEditable(false);
         celsiusResultsTB.setBounds(200, 60, 70, 20);
         add(celsiusResultsTB);

         JButton convertButton = new JButton("Convert");
         convertButton.setBounds(10, 100, 364, 80);
         add(convertButton);

         convertButton.addActionListener(this)
     }

     public void actionPerformed(ActionEvent e) {
         Part3Question1 convert = new Part3Question1();
         double Farenheit = Double.parseDouble(convert.fahrenheitTB.getText());

         double = Celcius(5.0 / 9.0) * (Farenheit - 32);

         convert.fahrenheitTB.SetText = Celcius;
     }
 }

非常感谢您的帮助。

不,不要在actionPerformed方法中创建另一个Part3Question1对象:

public void actionPerformed(ActionEvent e)
{   
    Part3Question1 convert = new Part3Question1();
    double Farenheit = Double.parseDouble(convert.fahrenheitTB.getText());
是的,您可以创建Part3Question1对象,但要了解它与当前显示的Part3Question1对象(即当前实例)` this,如果您愿意,它将完全无关

此外,即使您的代码工作正常,这也不是您调用setText(…)方法的方式:

只需调用当前Part3Question1对象的方法即可:

double farenheit = Double.parseDouble(fahrenheitTB.getText());

您可以使用
String.format(“%.2f”,someDoubleValue)
或使用DecimalFormat(如果您喜欢此工具)修剪转换结果。

因此,如果我理解正确,我的代码应该是这样的?
public void actionPerformed(ActionEvent e){double-Farenheit=double.parseDouble(fahrenheitTB.getText());double-Celcius=(5.0/9.0)*(Farenheit-32);celsiusResultsTB.SetText=Celcius;}
再说一遍,如何调用SetText方法?它是一种方法,而不是使用赋值运算符设置的变量,
=
。通常如何调用方法?通过创建对象的实例并调用方法。这不是正确的方法吗?除非是静态方法,其中a.methodName();您可以通过在对象的实例上调用方法来调用它,但方法需要括号。你的setText没有。这毫无意义。
double farenheit = Double.parseDouble(fahrenheitTB.getText());