-1

我的教授分配了一个通过 GUI 运行模拟的项目。要对其进行编辑,我们需要创建一个“新建”菜单项。我们还没有学会如何从 GUI 中获取数据,而且我们的书根本没有涉及它。

我想要做的是,当点击“新建”命令时,焦点会转移回 CMD 提示符,即 System.out 所在的位置。再次开始工作并提示用户输入。

但是,当我尝试实现这一点时,我的程序崩溃了。我能做些什么来解决这个问题?

4

4 回答 4

0

System.out 是否在终端(非 Java)窗口中?如果是这样,我认为这将比您想象的要困难得多。

我很想将 System.in / System.out 重定向到 GUI 上的 JTextPane (这样,改变焦点等会容易得多。我认为你需要尝试解释你在做什么你的问题好一点,当你的程序崩溃时可能会发布一个堆栈跟踪。

无论如何,要在单击“新”菜单项时执行某些操作,您需要执行以下操作:

menuItem.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
       // Code here to be performed when the item is clicked
   }
});
于 2008-12-08T21:37:12.487 回答
0

看起来您并没有保留对新创建的 GUI 的引用。据我记得,如果没有对 FoxGui 对象的引用,Java 将垃圾收集该对象(以及任何其他对象)。尝试创建一个全局变量来存储对新创建的 FoxGui 对象的引用。就像是...

FoxGui MyGUIRef;
public void actionPerformed(ActionEvent event) 
{ 
    System.out.println("Item: " + event.getActionCommand());

    // File Menu Controls
   if (event.getActionCommand().equals("New"))
   {
       MyGUIRef = runNew();
   }
}

//Now returns a reference to FoxGui
private FoxGui runNew()
{
     return new FoxGui(....)
}
于 2008-12-08T21:46:49.520 回答
0

你知道吗?我找到了一个真正简单的解决方案,JOptionPane。我只需要找到一个很好的例子。它会很好地满足我的需求。感谢所有的帮助。我会检查所有帮助过的人。

于 2008-12-08T22:00:35.717 回答
0

我知道这是很晚的答案,但在任何地方......

只有一种方法可以完全按照您的意愿行事。

  1. 首先你需要记住通过 java -jar jarname.jar 从 CMD 运行你的项目
  2. 捕捉点击动作并执行 system.in

信息:

这是唯一的解决方案,因为 GUI 从不将焦点放在 CMD 上,但如果 GUI 从 CMD 运行,您可以轻松使用 System.in。

问候,格雷格

于 2012-09-15T11:36:12.060 回答