我在單獨的jDialog
(jDialog
處於與JFrame
相同的包中)中使用此代碼示例來檢查(使用Thread
)如果jFrame
中的jCheckBox1
是否可見。 JDialog
設置爲可見,請在JFrame
中點擊JLabel
(更改密碼)。即使在點擊更改密碼JLabel
後,我仍未將JFrame
的可見性設置爲false
。如何通過檢查其中一個組件是否可見來檢查JFrame是否打開
我遇到的問題是,即使JFrame
是不可見即當我運行JDialog
單獨(無點擊更改密碼JLabel
)它打印「可見」,我更確保jFrame
不可見並且未運行。
這是我用來檢查的JFrame
知名度的代碼片段(Thread
)的jCheckBox1
:
LockOptions lock = new LockOptions();
private void setLocation2() {
new Thread() {
public void run() {
boolean running = true;
while (running) {
try {
Thread.sleep(1000);
if (lock.jCheckBox1.isVisible()) {
System.out.println("Visible");
} else {
System.out.println("Not Visible");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
,這是我的代碼已經寫在JFrame
的更改密碼JLabel
:
private void jLabel9MouseClicked(java.awt.event.MouseEvent evt) {
Container c = new ChangePassword(this, rootPaneCheckingEnabled);
if (!c.isShowing()) {
c.setVisible(true);
hideMeToSystemTray();
this.requestFocusInWindow();
}
}
但是當我運行JDialog
單獨(無點擊更改密碼JLabel
)它打印「可見」
我已附加既JFrame
的屏幕截圖和JDialog
JDialog
:
[java.awt.Component.isVisible](https://docs.oracle.com/javase/8/docs/api/java/awt/Component。HTML#isVisible--):「確定當它的父是可見的組件是否應該可見組件初始可見的,與頂層組分如框對象的例外。」。那麼爲什麼不檢查框架的可見性呢?你的代碼中有什麼'LockOptions'? –
@AxelRichter:LockOptions是'JFrame'的類名。你能給我舉個例子嗎? – CodingBeginner
即使我檢查的知名度'JFrame'它說**不可見**甚至是** **可見 – CodingBeginner