Java 创建执行功能的按钮

Java 创建执行功能的按钮,java,swing,jpanel,listener,jbutton,Java,Swing,Jpanel,Listener,Jbutton,我最终大大简化了我的方法。我只是将第二个类文件修改为用于按钮,并完全删除了第三个类文件。现在,操作按钮和按键盘上的返回键都会使程序完成计算。这其实并不难,只是需要使用相同的方法,但使用不同类型的侦听器。谢谢大家! import javax.swing.JFrame; public class Fahrenheit { public static void main (String[] args) { JFrame frame = new JFrame ("Fahrenh

我最终大大简化了我的方法。我只是将第二个类文件修改为用于按钮,并完全删除了第三个类文件。现在,操作按钮和按键盘上的返回键都会使程序完成计算。这其实并不难,只是需要使用相同的方法,但使用不同类型的侦听器。谢谢大家!

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类中定义一个类型为的变量,如

    专用华氏温度面板

    并更改类PushCounterPanel的构造函数

    公共推式对面板(华氏面板) { this.panel=panel; ... }

  • 为此,我们可以在面板FahrenheitPanel中获取输入文本值

    public JTextField getFahrenheit() {
        return fahrenheit;
    }
    
    
    public void setFahrenheit(JTextField fahrenheit) {
        this.fahrenheit = fahrenheit;
    
    2单击按钮时,首先需要检查文本值是否为空且不是数字。如果在文本字段中输入数值,则在类ButtonListener中添加以下代码

             fahrenheitTemp = Integer.parseInt(panel.getFahrenheit().getText());
             celsiusTemp = (fahrenheitTemp-32) * 5/9;
    
    这样,您可以通过单击按钮填充值

    3因此,您需要更改以下代码

    a) 在华氏温度下的主要方法

    frame.getContentPane().add(新的PushCounterPanel(面板

    b) 将以下getter/setter方法添加到类FahrenheitPanel中

    public JTextField getFahrenheit() {
        return fahrenheit;
    }
    
    
    public void setFahrenheit(JTextField fahrenheit) {
        this.fahrenheit = fahrenheit;
    

    希望这能对你有所帮助。

    “但第三点是我需要一些指导”嗯..”问一个问题'。这对指导有什么帮助?另外,为了更快地获得更好的帮助,请发布一个。好的观点。下次就可以了。谢谢你的链接,我知道了!我将用我的解决方案编辑我的原始帖子。非常感谢。