[英]Does JFrame.setExtendedState(MAXIMIZED_BOTH) work with undecorated frames?
[英]Why setExtendedState(JFrame.ICONIFIED)does not work while windows screen locked?
所有。 我想用setExtendedState(JFrame.ICONIFIED)最小化我的jframe,在大多數情況下,它可以正常工作,但是當我用WIN + L鎖定OS(Windows XP)屏幕時卻無法正常工作,我的wimple代碼如下:
import javax.swing.JDialog;
import javax.swing.JFrame;
public class FrameTest extends JFrame {
public static FrameTest ft = new FrameTest();
public static void main(String[] args)
{
FrameTest.ft.setVisible(true);
FrameTest.ft.setLocation(300, 300);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JDialog dlg = new JDialog( ft, "xxx", true );
ft.setExtendedState(JFrame.ICONIFIED);
dlg.setVisible(true);//if not have this line, it works also in screen lock case
}
}
任何幫助將不勝感激。
我可能是從主線程而不是事件調度線程來操縱Swing組件。 嘗試將main
的內容包裝在:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Rennable() {
@Override
void run() {
FrameTest.ft.setVisible(true);
FrameTest.ft.setLocation(300, 300);
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SwingUtilities.invokeLater(new Rennable() {
@Override
void run() {
JDialog dlg = new JDialog( ft, "xxx", true );
ft.setExtendedState(JFrame.ICONIFIED);
dlg.setVisible(true);case
}
}
如果那沒有幫助,請嘗試將第二個invokeLater
塊拆分為:
SwingUtilities.invokeLater(new Rennable() {
@Override
void run() {
ft.setExtendedState(JFrame.ICONIFIED);
}
SwingUtilities.invokeLater(new Rennable() {
@Override
void run() {
JDialog dlg = new JDialog( ft, "xxx", true );
dlg.setVisible(true);case
}
這樣一來,Swing就有機會在將控件移交給對話框之前對圖標化做出響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.