我在java-swing中制作了一个应用程序,
现在我遇到的问题是,
我希望在停用时最小化我的jframe,然后最大化我想要激活该窗口。
因此,为了最大化,我想使用java代码激活任何jframe 那么如何激活和停用任何jframe,以便我可以在窗口监听器上做点什么?
提前感谢。
答案 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