【问题标题】:Text Based game JTextArea does not displaying JTextField基于文本的游戏 JTextArea 不显示 JTextField
【发布时间】:2013-04-04 09:41:11
【问题描述】:

好的,所以我正在制作像 Zork 这样的基于文本的 Java 游戏。我正在使用一个简单的 GUI,它有一个 JTextField JTextArea 等。我很难让用户在文本字段中输入例如“North”,并且让 JTextArea 甚至说北,更不用说执行命令了。这是我的代码。

import java.awt.Color;
import java.awt.Desktop.Action;
import java.util.Scanner;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class gameFrame {


    public static void main(String[] args) {
        //create variables for graphics
        String a = ("Adventure");
        JFrame frame = new JFrame(a);
        JPanel panel = new JPanel();
        JTextField input = new JTextField(25);
        JTextArea output = new JTextArea("Hello", 65, 30);
        JMenu exit = new JMenu("Exit");

        //add main parts together
        frame.add(panel);
        panel.add(input);
        panel.add(output);


        //frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setResizable(false);
        frame.setSize(900, 600);

        //panel
        panel.setBackground(Color.WHITE);

        //input
        input.setForeground(Color.MAGENTA);
        String inputBox = input.getText();



        //output
        output.setEditable(false);
        output.setForeground(Color.MAGENTA);


        }


    }

【问题讨论】:

  • 我已经将代码设置为 if then 而不是 do while 并且它现在可以工作但是我如何 mkae jtextfield 触发器说你去了北方?只是在north上打字没有任何作用,它需要被解雇。

标签: java swing jtextfield jtextarea


【解决方案1】:

好的,所以您将 java 中的字符串与do .... while .... 循环进行比较。你有没有尝试过这样的事情?

String inputBox = input.getText();
do {
  // Code to do whatever when inputBox equals "north"
  output.append("You went: North");
}
while(inputBox.equals/*IgnoreCase*/("north");

您还可以将ActionListener 添加到JTextField。点击回车后,在JTextArea上显示JTextField的内容。

input.addActionListener(
  new ActionListener() {
    public void actionPerformed(ActionEvent event) {
      output.append(inputBox.getText());
    }
  }
);

这是未编译的,未选中的。

【讨论】:

  • 当我运行我的输入块时,我得到的只是“你向北走”而没有实际输入任何刚刚发生的东西?
  • 无论你输入什么,只要你点击回车,ActionListener就会出现。
  • 当我打开程序时,它只是在我做任何事情之前说“你往北走”。
  • 哦。嗯,很抱歉。正如我所说,我没有检查它。
猜你喜欢
  • 1970-01-01
  • 2017-01-18
  • 2021-06-25
  • 1970-01-01
  • 2013-07-08
  • 2015-09-10
  • 2023-01-08
  • 2018-11-14
  • 2019-02-05
相关资源
最近更新 更多