【问题标题】:JOptionPane using one window for input and outputJOptionPane 使用一个窗口进行输入和输出
【发布时间】:2023-03-26 15:36:01
【问题描述】:

所以我正在做一个小项目,我正在寻找如何在 JOptionPane 中执行此操作的基本代码。我对 Java 的这一面仍然很陌生。我不是在寻找很多东西,我只是不知道从哪里开始。

程序应该使用 JOptionPane 窗口填充屏幕。我需要像下图那样对其进行建模。底行是来自用户的文本输入,当他们按下回车键时,文本应该“刷新/清除”,然后中间的字符串区域应该填充用户输入,然后在其下方是 if 语句的结果根据代码。

例如:用户输入:“你好”。 然后文本输入应该刷新,灰色框应该这样做:“用户:你好。” “计算机:你好用户”。

我非常感谢您对此提供的任何帮助。

【问题讨论】:

  • 这是一个控制台程序,还是你想要一个功能齐全的 GUI 程序?
  • 它是一个基于文本的冒险游戏。我认为这属于控制台程序。我不会处理任何图像哈哈
  • JOptionPanes 并不是这样工作的。它们旨在从用户那里获得响应并将该信息发送回控制台或您的 gui 程序。但是您似乎想在控制台中输入并将输入输入到 gui 中。是哪一个?
  • 我现在有点困惑哈哈。我正在寻找的是一种让用户与基于文本的冒险游戏进行交互的方式。当我在 Eclipse 中运行我的大型基于文本的冒险游戏时,它会在 Eclipse 中的那个控制台上打印一系列信息,然后用户就有机会浏览基于文本的游戏。我正在寻找模仿日食的控制台。我不确定 JOptionPane 是否能够做到这一点。这样就清楚了吗?
  • 目前我几乎只使用扫描仪和 system.out.println 的。但我现在想将程序“移动”到某种 GUI 中,以便可以导出为可运行的 .jar 文件。

标签: java joptionpane


【解决方案1】:

你不会System.out.println() 进入一个 gui 组件。不能这样工作。您可以编写一个控制台程序并使用 JOptionPanes 获取用户输入,但输出将在控制台程序中使用。您需要创建一个模拟控制台的 gui 程序。

这是一个让你开始的基本布局

public class Game extends JFrame {
    JTextArea jta = new JTextArea(10, 30);
    JTextField jtf = new JTextField(30);

    public Game(){
        add(jtf, BorderLayout.SOUTH);
        add(jta, BorderLayour.CENTER);

        jta.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){

            }
        });
    }

    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                JFrame frame = new Game();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLocationRelativeTo(null);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

我的建议是,因为这是一个非常基本的程序,我会使用一个字符串命令数组并遍历它们。

例如:

String[] question = {"Do you want to go to school?",
                     "Do you want to drive or walk?"};

jta.setText(questions[0]);

然后在您的 actionPerformed 中从文本字段中获取答案。使用像

这样的 if 语句
if (jtf.getText().equals("yes") {
    jta.append(questions[1]);
}

等等。如果您不知道我在说什么,我真的会考虑使用我提到的 Swing 教程。这些教程中有很多信息。

【讨论】:

  • 哦哇...哈哈我明白你在那里做了什么。这真的,真的很有帮助。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
相关资源
最近更新 更多