如何在java中激活和停用框架?

时间:2010-05-27 07:47:57

标签: java jframe

我在java-swing中制作了一个应用程序,
现在我遇到的问题是,
我希望在停用时最小化我的jframe,然后最大化我想要激活该窗口。

因此,为了最大化,我想使用java代码激活任何jframe 那么如何激活和停用任何jframe,以便我可以在窗口监听器上做点什么?

提前感谢。

3 个答案:

答案 0 :(得分:4)

您需要向JFrame添加一个WindowListener,并将以下逻辑添加到您的侦听器中:

public class Demo extends JFrame implements WindowListener {

    public Demo() {
        addWindowListener(this);
    }

    public void windowActivated(WindowEvent e) {
        setExtendedState(getExtendedState() | Frame.ICONIFIED);
    }

    public void windowDeactivated(WindowEvent e) {
        setExtendedState(getExtendedState() | Frame.MAXIMIZED_BOTH);
    }

    ....
}

答案 1 :(得分:1)

以下作品:

import java.awt.Frame;

import javax.swing.*;

public class FrameTest {
    public static void main(String[] args) throws InterruptedException {

        // Create a test frame
        JFrame frame = new JFrame("Hello");
        frame.add(new JLabel("Minimize demo"));
        frame.pack();

        // Show the frame
        frame.setVisible(true);

        // Sleep for 5 seconds, then minimize
        Thread.sleep(5000);
        frame.setState(Frame.ICONIFIED);

        // Sleep for 5 seconds, then restore
        Thread.sleep(5000);
        frame.setState(Frame.NORMAL);

        // Sleep for 5 seconds, then kill window
        Thread.sleep(5000);
        frame.setVisible(false);
        frame.dispose();

        // Terminate test
        System.exit(0);
    }
}

http://www.javacoffeebreak.com/faq/faq0055.html修改


要关注窗口,您可以frame.requestFocus();

答案 2 :(得分:0)

在我的实践中,在设置常规属性时未激活窗口时,我经常遇到问题: frame.setVisible(true); frame.setState(Frame.NORMAL);

我找到了激活窗口的解决方案:

frame.setExtendedState (JFrame.ICONIFIED);
frame.setExtendedState (JFrame.NORMAL);
frame.toFront ();
frame.requestFocus ();

// frame - JFrame