是的,對(duì)于java或C#,C++等都是,按鈕處理方法與界面線程在同一現(xiàn)成,就是說(shuō)程序在執(zhí)行按鈕處理方法時(shí),界面就會(huì)無(wú)響應(yīng),所以如果按鈕處理的程序需要長(zhǎng)時(shí)間運(yùn)行,就要將處理方法寫(xiě)在線程里執(zhí)行,簡(jiǎn)單來(lái)說(shuō),用匿名內(nèi)部類就可以
目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、阜寧網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
new Thread() {
public void run() {
//TODO: 將需要長(zhǎng)時(shí)間處理的代碼寫(xiě)在這里
//eg:
ThisClass.this.doSomething(); //ThisClass是當(dāng)前類名
}
}.start();
2021-04-10 01
利用死循環(huán)和線程,讓線程在循環(huán)中每sleep1秒,重新獲取下系統(tǒng)時(shí)間就是動(dòng)態(tài)顯示時(shí)間了。
while(true){
Date date=new Date(System.currentTimeMillis());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(date);
//每一秒刷新下時(shí)間
try {
Thread.sleep(1000);//sleep是以ms為單位
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
可以使用JLabel的setText(text);例如:label.setText(text);
下面是一個(gè)具體的實(shí)例,當(dāng)單擊change按鈕時(shí)改變文字內(nèi)容。
public class WinTest implements ActionListener
{
JLabel label = new JLabel("注意我會(huì)變哦!");
public WinTest()
{
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
JButton button = new JButton("change");
button.addActionListener(this);
frame.add(button);
Font font = new Font("黑體",Font.PLAIN,40);
label.setFont(font);
frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
public static void main(String[] args)
{
new WinTest();
}
@Override
public void actionPerformed(ActionEvent e)
{
if("change".equals(e.getActionCommand()))
{
label.setText("啊哈哈!我會(huì)72變,啊哈哈哈哈哈哈!");
}
}
}