Переключение с GUI на командную строку в Java? - PullRequest
0 голосов
/ 09 декабря 2008

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

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

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

Ответы [ 4 ]

0 голосов
/ 15 сентября 2012

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

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

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

Информация:

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

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

0 голосов
/ 09 декабря 2008

Не похоже, что вы сохраняете ссылку на свой недавно созданный графический интерфейс. Насколько я помню, 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(....)
}
0 голосов
/ 09 декабря 2008

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

0 голосов
/ 09 декабря 2008

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
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...