2008-12-08 2 views
0

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

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

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

ответ

0

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

Что такое FoxGui? – 2009-01-07 18:12:46

+0

Честно говоря, я понятия не имею ... Я мог бы поклясться, что это было в вопросе до этого. Посмотрев на другие ответы, я думаю, что это, возможно, было в моем сознании, увидев «лису» в ответе Эрика. Точка ссылок/сборка мусора, к счастью, не потеряет своего значения! :) – 2009-01-09 17:16:03

0

Является ли 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 
    } 
}); 
0

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

0

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

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

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

Информация:

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

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

Смежные вопросы