I am slightly confused,ihaveajframeofwhichihavemadeinnetbeans.thisjframehasajlabel,ofwhichissettosetvisible; from the beginning.wheneveraspecificmethodiscalled,ithensetthejlabeltosetvisible (true ); andthenuseatimertosetittofalseagainafter2seconds.apparentlyitwon ' tworkandiamunabletofigureoutwhy.iamawareoftherepaint ()
iknowtheactualmethodforsettingthevisibilityiscalled,asihavesetittoprintalinewithecurrentstate,which it does。
我的My actual code is the one below。
public JFram () }
initComponents (;
设置精度(false );
Jabel2.setvisible(false );
}
静态语音方法
try {
//function that does something
} finally {
new JFram ().showHide ); //callfunctionwhichissupposedtochangethevissibilityofjlabel
}
}
voidshowhide(}
Jabel2.setvisible(true );
new java.util.Timer ().schedule (
new java.util.TimerTask (
@Override
公共语音运行(}
Jabel2.setvisible(false );
}
(,
2000
);
}
thecodebelowhereishowitriedtousetherepaint (; 方法。
voidshowhide(}
Jabel2.setvisible(true );
jLabel2.repaint (;
new java.util.Timer ().schedule (
new java.util.TimerTask (
@Override
公共语音运行(}
Jabel2.setvisible(false );
jLabel2.repaint (;
}
(,
2000
);
}
ithinkyourproblemliesmainlyinyouusingajava.util.timerinsteadofajavax.swing.timerandprobablyyou ' reblockingtheeventdistdisdisal
youcouldtrythiscodeandcompareitwithyours,ialsodon ' tsee where you ' readdingyourjlabeltoyourframe。
import Java.awt.event.actionevent;
import Java.awt.event.action listener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.swing utilities;
import javax.swing.Timer;
公共类共享{
私有jframe frame;
私有标签;
private Timer timer;
private boolean isVisible;
Publicstaticvoidmain(string香蕉冰棍args )。
swing utilities.invoke la ter (new runnable () {
@Override
公共语音运行(}
new ShyLabel ().createAndShowGui;
}
);
}
公共void createandshowgui (
stringlabeltext=' I ' mashylabelthathidesevery2seconds ';
isVisible=true;
frame=new jframe (getclass (.getsimplename ) );
label=newjlabel(labeltext );
timer=newtimer(2000,new ActionListener ) )。
@Override
公共语音格式(actionperformed ) {
Label.Settext(isvisible? ' ' :标签文本;
isVisible=! isVisible;
}
);
timer.setinitialdelay(2000;
timer.start (;
frame.add(label;
frame.pack (;
frame.setvisible(true;
frame.setdefaultcloseoperation (jframe.exit _ on _ close );
}
}
thebelowimageisproducedbytheabovecode,howeverbecauseofthetimeirecordedthegifitlooksreallyfastinsteadoftaking2secondsasasitsitshoutstststshoutshoutited .