我想知道接近我想要实现的目标的最佳方法,我无法弄清楚我应该采取的逻辑路径。
我有一个JTextField和一个JTextButton,当输入添加到JTextField并输入或按下按钮时,它将显示在JTextArea上。现在,我想要的是选择JTextArea和Button的时间和内容。
例如我想要默认输入&按钮在我的代码中显示下一个附加文本。然后,当一个案例呈现时,我希望JTextField只接受int或string,然后一旦完成,我希望它返回默认值。
我不知道我想做的事情是合乎逻辑的还是最佳的做法......
这背后的想法是,我有一个基于故事文本的gui游戏。我希望它向JTextArea显示文本,当按下Enter或按钮显示下一行文本时,在故事中它需要用户输入时,JTextArea将查找该输入。
到目前为止,我有一个EventListener和ActionListener,它将我从JTextField键入的内容提交给JTextArea,但这是关于它的。
答案 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.");
}
}
}
});