我最终大大简化了我的方法。我刚刚将第二个类文件修改为按钮,并完全删除了第三个类文件。现在,操作按钮和键盘上的返回键都会使程序完成计算。这确实并不困难,只是需要使用相同的方法但使用不同类型的听众。谢谢!
import javax.swing.JFrame;
public class Fahrenheit
{
public static void main (String[] args)
{
JFrame frame = new JFrame ("Fahrenheit");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FahrenheitPanel panel = new FahrenheitPanel();
frame.getContentPane().add(panel);
frame.pack();frame.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FahrenheitPanel extends JPanel
{
private JLabel inputLabel, outputLabel, resultLabel;
private JTextField fahrenheit;
private JButton push;
public FahrenheitPanel()
{
inputLabel = new JLabel ("Enter Fahrenheit temperature:");
outputLabel = new JLabel ("Temperature in Celsius: ");
resultLabel = new JLabel ("---");
push = new JButton ("Convert");
fahrenheit = new JTextField (5);
fahrenheit.addActionListener (new TempListener());
push.addActionListener (new ButtonListener());
add (inputLabel);
add(fahrenheit);
add (outputLabel);
add (resultLabel);
add (push);
setPreferredSize (new Dimension(300,75));
setBackground (Color.yellow);
}
private class TempListener implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
int fahrenheitTemp, celsiusTemp;
String text = fahrenheit.getText();
fahrenheitTemp = Integer.parseInt (text);
celsiusTemp = (fahrenheitTemp-32) * 5/9;
resultLabel.setText (Integer.toString (celsiusTemp));
}
}
private class ButtonListener implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
int fahrenheitTemp, celsiusTemp;
String text = fahrenheit.getText();
fahrenheitTemp = Integer.parseInt (text);
celsiusTemp = (fahrenheitTemp-32) * 5/9;
resultLabel.setText (Integer.toString (celsiusTemp));
}
}
}
最佳答案
您可以执行以下操作来实现它。
在类 PushCounterPanel 中定义类型变量,例如
私有(private) FahrenheitPanel 面板;
并更改类 PushCounterPanel 的构造函数。
公共(public) PushCounterPanel(FahrenheitPanel 面板) { this.panel = 面板; ... }
为此,我们可以在 FahrenheitPanel 面板中获取输入文本值。
2 单击按钮时,首先需要检查文本值是否为空且不是数字。如果在文本字段中输入数值,则在 ButtonListener 类中添加以下代码。
fahrenheitTemp = Integer.parseInt(panel.getFahrenheit().getText());
celsiusTemp = (fahrenheitTemp-32) * 5/9;
这样就可以通过点击Button来填充值了。
3 因此,您需要更改以下代码。
a) 华氏度的主要方法
frame.getContentPane().add(new PushCounterPanel(面板));
b) 将以下 getter/setter 方法添加到 FahrenheitPanel 类中。
public JTextField getFahrenheit() {
return fahrenheit;
}
public void setFahrenheit(JTextField fahrenheit) {
this.fahrenheit = fahrenheit;
希望这可以帮助你。
关于java - 创建执行功能的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19698548/