Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个JTextFields传递给布尔方法_Java_Methods_Jtextfield - Fatal编程技术网

Java 将多个JTextFields传递给布尔方法

Java 将多个JTextFields传递给布尔方法,java,methods,jtextfield,Java,Methods,Jtextfield,Fourofeand方法应该测试4个JTextFields,并检查它们是否都相等。每个JTextField不包含一个数字。当我按下按钮Listener时,当我输入数字5555 ex时,boolean方法Fourofaand不会响应,即使它返回false import java.awt.*; import java.awt.event.*; import javax.swing.*; /** */ public class MyPanel extends JPanel { private

Fourofeand方法应该测试4个JTextFields,并检查它们是否都相等。每个JTextField不包含一个数字。当我按下按钮Listener时,当我输入数字5555 ex时,boolean方法Fourofaand不会响应,即使它返回false

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
 */
public class MyPanel extends JPanel
{
    private JLabel inputLabel, outputLabel;
    private JButton button;
    private JTextField digit1, digit2, digit3, digit4;

    public MyPanel()
    {
        inputLabel = new JLabel ("Enter four one digit numbers between zero and 9");
        button = new JButton ("Result");
        outputLabel = new JLabel ("---");

        digit1 = new JTextField(1);
        digit1.addActionListener (new ButtonListener());

        digit2 = new JTextField(1);
        digit2.addActionListener (new ButtonListener());

        digit3 = new JTextField(1);
        digit3.addActionListener (new ButtonListener());

        digit4 = new JTextField(1);
        digit4.addActionListener (new ButtonListener());

        add(inputLabel);
        add(digit1);
        add(digit2);
        add(digit3);
        add(digit4);
        add(button);
        add(outputLabel);

        setPreferredSize(new Dimension(300,100));
        setBackground(Color.yellow);
    }

    private class ButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent even)
        {
            int num1, num2, num3, num4;

            String text = digit1.getText();
            num1 = Integer.parseInt(text);

            String text2 = digit2.getText();
            num2 = Integer.parseInt(text2);

            String text3 = digit3.getText();
            num3 = Integer.parseInt(text3);

            String text4 = digit4.getText();
            num4 = Integer.parseInt(text4);

            if (fourOfAKind(num1, num2, num3, num4))
            outputLabel.setText ("four of a kind");
        }
    }

    public boolean fourOfAKind(int a, int b, int c, int d)
    {
        return (a == b && b == c && c == d);
    }
}

ButtonListener只需添加到按钮,以便在按下按钮并触发事件时激活

您可以删除'digitN.addActionListener(new ButtonListener());`而是使用:

button.addActionListener(new ButtonListener());

这样,您就可以指示Java听正在按下的按钮,而不是文本字段(当按下
Enter
键时会触发该字段)

使用
equals()
而不是
=
,这非常有帮助,现在就可以工作了。因此,当我创建JTextField时,我会将其添加到actionlistener中,这是一个按钮,而不是将JTextField添加到其自身中?当您将actionlistener添加到JTextField中时,它会“监听”用户按下
Enter
。要在按下按钮时运行ActionListener,需要将其直接添加到该按钮,尽管它使用AWT组件,但对Swing组件也可以这样做,因为它们毕竟是继承的。