EventListener由case执行

时间:2017-08-07 05:44:04

标签: java swing

我想知道接近我想要实现的目标的最佳方法,我无法弄清楚我应该采取的逻辑路径。

我有一个JTextField和一个JTextButton,当输入添加到JTextField并输入或按下按钮时,它将显示在JTextArea上。现在,我想要的是选择JTextArea和Button的时间和内容。

例如我想要默认输入&按钮在我的代码中显示下一个附加文本。然后,当一个案例呈现时,我希望JTextField只接受int或string,然后一旦完成,我希望它返回默认值。

我不知道我想做的事情是合乎逻辑的还是最佳的做法......

这背后的想法是,我有一个基于故事文本的gui游戏。我希望它向JTextArea显示文本,当按下Enter或按钮显示下一行文本时,在故事中它需要用户输入时,JTextArea将查找该输入。

到目前为止,我有一个EventListener和ActionListener,它将我从JTextField键入的内容提交给JTextArea,但这是关于它的。

1 个答案:

答案 0 :(得分:0)

感谢您的协助!我已经解决了我的问题,不确定这是否是"最佳解决方案"。我将您的解决方案与一些调整结合起来。

在这个例子中,buttonState是一个int,可以通过调用构造函数" setButtonState"来改变整个代码。我可以将buttonState设置为静态以使事情变得更容易,但我认为我可以保持清洁。

 enterButton.addActionListener(new ActionListener()
        {   //This is used so when the enter screen button is pressed, it will submit text from text field to text area.

            public void actionPerformed(ActionEvent e) {
                String text = inputTextField.getText();
                InputTextFieldEvent event = new InputTextFieldEvent(this, text);

                if (buttonState == 0) //Displays all text in JTextField to JTextArea, mostly for testing purposes.
                {
                    if (textInputListener != null) {
                        textInputListener.setInputListenerOccurred(event);
                    }
                }
                if (buttonState == 1) //Only accepts string for answer
                {
                    if (inputTextField.getText().matches("[a-zA-Z]+"))
                    {
                        textInputListener.setInputListenerOccurred(event);
                    }
                    else
                    {
                        getAppendMainTextArea("You have entered an invalid input, only letters are allowed.");
                    }
                }
                if (buttonState == 2) //Only accepts int for answer
                {
                    if (inputTextField.getText().matches("[0-9]+"))
                    {
                        textInputListener.setInputListenerOccurred(event);
                    }
                    else
                    {
                        getAppendMainTextArea("You have entered an invalid input, only numbers are allowed.");
                    }
                }
            }
        });