JFrame вопрос - PullRequest
       34

JFrame вопрос

1 голос
/ 27 июня 2011

Какой код вызывается, когда JFrame свернут?Это подключено к слушателю?Я просто хочу знать, что происходит внутри, когда кадр свернут.

РЕДАКТИРОВАТЬ: Я на самом деле ищу код, который вызывается, когда кадр свернут.Например, код для фактического windowListener.Я искал JFrame, Frame и Window в поисках windowIconified, но не смог найти фактический код.

Причина в том, что при запуске моей программы она имеет небольшой дефектс одной из панелей, но когда я минимизирую и максимизирую JFrame, проблема исчезает.Я хотел посмотреть, что происходит, чтобы я мог применить все, что происходит, к моей панели, чтобы она рисовала правильно.

Ответы [ 4 ]

3 голосов
/ 27 июня 2011

вы можете слушать, используя WindowListener

например

import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JFrame;

public class WinStateListener implements WindowListener {

    static JFrame window = new JFrame("Window State Listener");

    public WinStateListener() {
        window.setBounds(30, 30, 300, 300);
        window.addWindowListener(this);
        window.setVisible(true);
    }

    public static void main(String[] args) {
        WinStateListener winStateListener = new WinStateListener();
    }

    public void windowClosing(WindowEvent e) {
        System.out.println("Closing");
        window.dispose();
        System.exit(0);
    }

    public void windowOpened(WindowEvent e) {
        System.out.println("Opened");
    }

    public void windowClosed(WindowEvent e) {
        System.out.println("Closed");
    }

    public void windowIconified(WindowEvent e) {
        System.out.println("Iconified");
    }

    public void windowDeiconified(WindowEvent e) {
        System.out.println("Deiconified");
    }

    public void windowActivated(WindowEvent e) {
        System.out.println("Activated");
    }

    public void windowDeactivated(WindowEvent e) {
        System.out.println("Deactivated");
    }
}
2 голосов
/ 27 июня 2011

Вы хотите прочитать о WindowListeners и WindowEvents. Событие, о котором вы говорите, называется значком окна. Подробнее здесь:

http://download.oracle.com/javase/tutorial/uiswing/events/windowlistener.html

EDIT: Используйте revalidate(), затем repaint() на JPanel, которая работает.

1 голос
/ 27 июня 2011

Какой код вызывается, когда JFrame свернут?

Как отмечено в Как создавать кадры: указание декораций окон , «Оформление окон обеспечивается собственной оконной системой».Далее в статье описываются некоторые изменения, которые вы можете внести в платформу хоста по умолчанию.

Приложение: читая ваше обновление, обратите внимание, что восстановление значков в окне перерисовывает его.Как указывает @Andrew Thompson, вам может потребоваться проверить, что вы строите поток обработки событий .Вам также может понадобиться запланировать repaint(). sscce может прояснить ситуацию.

1 голос
/ 27 июня 2011

При сворачивании приложения JFrame вызывается событие окна windowIconified. Если вы хотите обрабатывать такие события окна самостоятельно, то либо реализуйте интерфейс WindowListener, либо используйте WindowAdapter abstract class.

...