我的教授指定了一个项目,通过GUI运行模拟。要编辑它,我们需要创建一个“新建”菜单项。我们还没有学习如何从GUI获取数据,我们的书根本没有涵盖它。
我正在尝试做的是,当点击“新建”命令时,焦点会转移回CMD提示符,其中System.out。再次开始工作并提示用户输入。
然而,当我尝试实现这个时,我的程序崩溃了。我该怎么做才能解决这个问题?
答案 0 :(得分: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
}
});
答案 1 :(得分:0)
看起来你没有保留对新创建的GUI的引用。据我所知,如果没有对该对象的引用,Java将垃圾收集FoxGui对象(以及任何其他对象)。尝试创建一个全局变量来存储对新创建的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(....)
}
答案 2 :(得分:0)
答案 3 :(得分:0)
我知道答案很晚,但无论如何......
只有一种方法可以完全按照自己的意愿行事。
信息:
这是唯一的解决方案,因为GUI从不关注CMD,但如果从CMD运行GUI,您可以轻松使用System.in。
问候,格雷格