我正在展示我的代码;我在提交按钮单击时显示输出有问题。起初,我无法在我的内部类中使用局部变量,但是当我搜索某个人时,请使用final
。我做了,但仍然没有得到任何输出这是这个按钮背后的简单公式。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;
public class FtoC {
public static void main(String[] args) {
Frame frm = new Frame();
Label lb = new Label("Calculater");
frm.setSize(500, 300);
frm.setVisible(true);
frm.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Panel obj = new Panel();
Panel obj2 = new Panel();
Label F = new Label("F");
final TextField Ft = new TextField(10);
Label C = new Label("C");
TextField Ftc = new TextField(10);
obj.setLayout(new GridLayout(1, 1));
obj.add(F);
obj.add(Ft);
obj.add(C);
obj.add(Ftc);
final String sFt = Ft.getText();
Button submit = new Button("Calculate");
submit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double Ftn = Double.parseDouble(sFt);
double result = (Ftn - 32) * 5 / 9;
//System.out.println(Ft);
JOptionPane.showMessageDialog(null, result);
}
});
obj.add(submit);
obj2.add(obj);
frm.add(obj2, BorderLayout.NORTH);
}
}
答案 0 :(得分:2)
final String sFt=Ft.getText();
这里的问题是你在用户输入任何文本之前从字段中分配值。
不是使String最终,而是在触发动作事件时从字段中获取文本。
虽然我希望这是一个测试程序,但我建议您创建一个自定义面板(从JPanel扩展的类),使表单元素成为私有成员。从那里形成您将极大地简化您的设计并减少您的问题
答案 1 :(得分:1)
你不想在施工后立即获得Ft
小部件的价值,不是吗?你想要的,无论点击按钮什么,对吧?所以,移动
String sFt=Ft.getText()
进入动作监听器。
答案 2 :(得分:1)
此外,pack()
您的框架并致电setVisible()
最后:
public static void main(String[] args) {
...
frm.add(obj2, BorderLayout.NORTH);
frm.pack();
// frm.setSize(500, 300); // optional
frm.setVisible(true);
}