user489041
user489041

Reputation: 28294

JFrame question

What code is called when a JFrame is minimized? Is it hooked up to a listener? I just want to know what happens internally when the frame is minimized.

EDIT: Im actually looking for the code that is called when the frame is minimized. For example, the code for the actual windowListener. Ive been searching through JFrame, Frame, and Window searching for windowIconified but have been unable to find the actual code.

Reason being, when my program runs, it has a small defect with one of the Panels, but when I minimize and maximize the JFrame, the problem goes away. I wanted to see what was going on so that I can apply whatever is going on to my Panel so it paints right.

Upvotes: 1

Views: 698

Answers (4)

MirroredFate
MirroredFate

Reputation: 12816

You want to read about WindowListeners and WindowEvents. The event you are talking about is called Iconifying the window. Read more here:

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

EDIT: Use revalidate() then repaint() on the JPanel that is acting up.

Upvotes: 2

trashgod
trashgod

Reputation: 205775

What code is called when a JFrame is minimized?

As noted in How to Make Frames: Specifying Window Decorations, "window decorations are supplied by the native window system." The article goes on to describe some changes you can make to the host platform's default.

Addendum: Reading your update, note that restoring an iconified window repaints it. As @Andrew Thompson points out, you may need to verify that you're building on the event dispatch thread. You may also need to schedule a repaint(). An sscce might clarify things.

Upvotes: 1

gtiwari333
gtiwari333

Reputation: 25146

When minimizing the JFrame application a window event windowIconified is called. If you want to process such window events by your own then either implement WindowListener interface or use WindowAdapter abstract class.

Upvotes: 1

mKorbel
mKorbel

Reputation: 109815

you can listening by using WindowListener

for example

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");
    }
}

Upvotes: 3

Related Questions