2016-12-16 3 views
1

Я довольно новичок в Java, но знаком с родным Android-разработчиком, так что несите со мной xD. Я создал приложение, которое создает JFrame. Затем я установил closeOperation: setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);.Java - Как «показать» JFrame

Выполняется так, как ожидается, кадр скрыт, и это то, что я хочу (когда я закрываю). Мне нужно, чтобы приложение продолжало работать (только один экземпляр экземпляра), потому что я запускаю поток в фоновом режиме, который выполняет операцию.

Мой ActionListener на моей кнопки в моей JFrame в настоящее время делает это: setVisible(false);

Мой вопрос это, как я могу максимизировать JFrame снова после того, как она была скрыта? Можно ли отобразить кадр, когда пользователь нажимает на свернутое приложение на панели задач? Есть ли какой-то тип слушателя, который мне нужно реализовать?

Спасибо заранее, любые советы будут оценены

UPDATE

Для этого решения, чтобы правильно вам нужно сделать следующую работу. Также взгляните на ответ XtremeBaumer, чтобы это имело смысл.

О создании JFrame setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);. Если вы хотите свернуть приложение (возможно, на клик) frame.setState(Frame.ICONIFIED);. Если вы хотите снова увеличить приложение frame.setState(Frame.NORMAL); в windowDeiconified события.

Последнее, если вы хотите также свернуть свое приложение, когда пользователь нажимает кнопку выхода (красный x), добавьте это в событие windowClosingframe.setState(Frame.ICONIFIED);.

+0

Создав экземпляр этого JFrame, а затем вызовите метод 'setVisible (true)'? –

ответ

2
this.addWindowListener(new WindowListener(){ 

     @Override 
     public void windowActivated(WindowEvent e) { 
     } 

     @Override 
     public void windowClosed(WindowEvent e) { 
     } 

     @Override 
     public void windowClosing(WindowEvent e) { 
      setState(Frame.ICONIFIED) 
     } 

     @Override 
     public void windowDeactivated(WindowEvent e) { 
     } 

     @Override 
     public void windowDeiconified(WindowEvent e) { 
      this.setVisible(true); 
      //this should be what you want 
     } 

     @Override 
     public void windowIconified(WindowEvent e) { 
     } 

     @Override 
     public void windowOpened(WindowEvent e) { 
     } 

    }); 

Надеюсь, это решает вопрос. добавьте его в свой JFrame

+0

Спасибо, возможно, также добавьте это в свой ответ (работал, когда я реализовал этот ответ) - http://stackoverflow.com/questions/3965336/how-to-minimize-a-jframe-window-from-java. В противном случае событие 'windowDeiconified' никогда не вызывается – Lunchbox

+0

, поэтому я обнаружил проблему, что после того, как вы установили окноVisible (false) или hide(), пользователь не сможет отобразить его снова, щелкнув значок, потому что нет значка. как вы это решили? – XtremeBaumer

+0

Когда создается JFrame, сделайте это вместо этого (сейчас я отредактирую свой вопрос). 'SetDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);'. Затем вам нужно обработать закрытие JFrame самостоятельно, используя 'frame.setState (Frame.ICONIFIED);' и 'frame.setState (Frame.NORMAL);'. Иконированные минимизируют и нормальные обратные. Пользователь не должен закрывать мое приложение, а не хитрит, но не зря. Заказ клиентов. – Lunchbox

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