Переключение с графического интерфейса на командную строку в Java?

Мой профессор поручил проект, в котором симуляция выполняется через графический интерфейс. Для его редактирования нам нужно создать пункт меню «Новый». Мы не научились получать данные из графического интерфейса, и в нашей книге это вообще не рассматривается.

Что я пытаюсь сделать, так это то, что при нажатии команды «Создать» фокус снова смещается на приглашение CMD, где System.out. снова начинает работать и запрашивает у пользователя ввод.

Однако, когда я пытаюсь реализовать это, моя программа падает. Что я могу сделать, чтобы решить эту проблему?


person Community    schedule 08.12.2008    source источник


Ответы (4)


Не похоже, что вы сохраняете ссылку на свой недавно созданный графический интерфейс. Насколько я помню, 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(....)
}
person Dalin Seivewright    schedule 08.12.2008
comment
Честно говоря, я понятия не имею... Я мог бы поклясться, что это было в вопросе раньше. Посмотрев на другие ответы, я думаю, что, возможно, это пришло мне в голову после того, как я увидел «лису» в ответе Эрика. Точка отсчета/сборка мусора, к счастью, не теряет своего смысла! :) - person Dalin Seivewright; 09.01.2009
comment
Хорошо, теперь я это вижу (новый FoxGui(глубина, ширина, лиса, кролик);); Я предполагаю, что это одна из опасностей, когда люди добавляют ответы вместо того, чтобы редактировать вопрос. :) - person Michael Myers; 12.01.2009

Является ли System.out окном терминала (не Java)? Если так, я думаю, это будет намного сложнее, чем вы думаете.

У меня возникнет соблазн перенаправить System.in/System.out в JTextPane в графическом интерфейсе (таким образом было бы намного проще изменить фокус и т. д. Я думаю, вам нужно попытаться объяснить, что вы делаете немного лучше в вашем вопросе и, возможно, опубликуйте трассировку стека при сбое вашей программы.

В любом случае, чтобы что-то сделать при нажатии на «новый» пункт меню, вам нужно сделать:

menuItem.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
       // Code here to be performed when the item is clicked
   }
});
person Richard Walton    schedule 08.12.2008

Знаешь что? Я нашел действительно простое решение, JOptionPane. Мне просто нужно было найти хороший пример. Он отлично подойдет для того, что я хочу. Спасибо за помощь. Отмечу всех, кто помог.

person Community    schedule 08.12.2008

Я знаю, что это очень поздний ответ, но где угодно...

Есть только один способ сделать именно то, что вы хотите.

  1. Сначала вам нужно не забыть запустить проект из CMD с помощью java -jar jarname.jar
  2. Поймать действие щелчка и выполнить system.in

Информация:

Это единственное решение, потому что GUI никогда не фокусируется на CMD, но если GUI запускается из CMD, вы можете легко использовать System.in.

С уважением, Грег

person BigGinDaHouse    schedule 15.09.2012