我有點困惑,我有一個我在Netbeans中製作的jFrame。這jFrame有一個jLabel,其中從一開始就設置爲setVisible(false);
。無論何時調用特定方法,我都會將jLabel設置爲setVisible(true);
,然後在2秒後再次使用計時器將其設置爲false
。顯然它不會工作,我無法弄清楚爲什麼。我知道repaint();方法,但也可以找出如何使這項工作。jLabel不會顯示
我知道設置可見性的實際方法是被調用的,因爲我已經將它設置爲用當前狀態打印一條線,它是做什麼的。
我的實際代碼是下面的代碼。
public JFram() {
initComponents();
setResizable(false);
jLabel2.setVisible(false);
}
static void tesMethod() {
try {
//function that does something
} finally {
new JFram().showHide(); //call function which is supposed to change the vissibility of jLabel
}
}
void showHide() {
jLabel2.setVisible(true);
System.out.println("reached show");
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
jLabel2.setVisible(false);
System.out.println("reached timer");
}
},
2000
);
}
下面的代碼是我試圖使用repaint();方法。
void showHide() {
jLabel2.setVisible(true);
jLabel2.repaint();
System.out.println("reached show");
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
jLabel2.setVisible(false);
jLabel2.repaint();
System.out.println("reached timer");
}
},
2000
);
}
與其使用'JLabel'可見性玩,不如玩它的文本? (即'JLabel.setText(「」);'),這將導致類似的效果。 – Frakcool
另外,您不應該使用['java.util.Timer'](https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html),而應該使用['javax .swing.Timer'](https://docs.oracle.com/javase/8/docs/api/javax/swing/Timer.html) – Frakcool
@Frakcool我真的很欣賞這個輸入,我沒有想到這一點。雖然嘗試後,問題仍然存在,它仍然無法正常工作。我已將所有'setVisible'行更改爲'setText(「」)'或'setText(「完成」)'。 – Sm00rf9000