午夜无码人妻aⅴ大片色欲张津瑜,国产69久久久欧美黑人A片,色妺妺视频网,久久久久国产综合AV天堂

Swing組件相關(guān)的操作有哪些

這篇文章將為大家詳細(xì)講解有關(guān)Swing組件相關(guān)的操作有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司是一家專(zhuān)注于網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),鶴山網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:鶴山等地區(qū)。鶴山做網(wǎng)站價(jià)格咨詢(xún):18980820575

不靈敏的圖形用戶(hù)界面會(huì)降低應(yīng)用程序的可用性。當(dāng)以下現(xiàn)象出現(xiàn)的時(shí)候,我們通常說(shuō)這個(gè)用戶(hù)界面反應(yīng)不靈敏:
◆不響應(yīng)事件的現(xiàn)象;
◆沒(méi)有更新的現(xiàn)象;

這些現(xiàn)象在很大程度上與事件的處理方法相關(guān),而在編寫(xiě)Swing應(yīng)用程序的時(shí)候,我們幾乎必然要編寫(xiě)方法去響應(yīng)鼠標(biāo)點(diǎn)擊按鈕,鍵盤(pán)回車(chē)等事件。在這些方法中我們要編寫(xiě)一些代碼,在運(yùn)行時(shí)去觸發(fā)一些動(dòng)作。常見(jiàn)動(dòng)作包括查找,更新數(shù)據(jù)庫(kù)等。在這篇文章中通過(guò)對(duì)一個(gè)實(shí)例的分析,介紹了一些基本概念,常見(jiàn)的錯(cuò)誤以及提出了一個(gè)解決方案。

event-dispatching thread
我們一定要記住,事件響應(yīng)方法的代碼都是在event-dispatching thread中執(zhí)行的,除非你啟用另一個(gè)線程。
那么,什么是event-dispatching thread呢?單一線程規(guī)則:一旦一個(gè)Swing組件被實(shí)現(xiàn)(realized),所有的有可能影響或依賴(lài)于這個(gè)組件的狀態(tài)的代碼都應(yīng)該在event-dispatching thread中被執(zhí)行。而實(shí)現(xiàn)一個(gè)組件有兩種方式,對(duì)頂層組件調(diào)用show(), pack(), 或者setVisible(true)。

將一個(gè)組件加到一個(gè)已經(jīng)被實(shí)現(xiàn)的容器中。

單一線程規(guī)則的根源是由于Swing組件庫(kù)的大部分方法是對(duì)多線程不安全的。

為了支持單一線程模型,Swing組件庫(kù)提供了一個(gè)專(zhuān)門(mén)來(lái)完成這些與Swing組件相關(guān)的操作的線程,而這一線程就是event-dispatching thread。我們的事件響應(yīng)方法通常都是由這一線程調(diào)用的,除非你自己編寫(xiě)代碼來(lái)調(diào)用這些事件響應(yīng)方法。在這里初學(xué)者經(jīng)常犯的一個(gè)錯(cuò)誤就是在事件響應(yīng)方法中完成過(guò)多的與修改組件沒(méi)有直接聯(lián)系的代碼。其最有可能的效果就是導(dǎo)致組件反應(yīng)緩慢。比如以下響應(yīng)按鈕事件的代碼:

String str = null;  this.textArea.setText("Please wait...");  try {  //do something that is really time consuming  str = "Hello, world!";  Thread.sleep(1000L);  } catch (InterruptedException e) {  e.printStackTrace();  }  this.textArea.setText(str);

執(zhí)行之后的效果就是按鈕似乎定住了一段時(shí)間,直到Done.出現(xiàn)之后才彈起來(lái)。原因就是Swing組件的更新和事件的響應(yīng)都是在event-dispatching thread中完成的,而事件響應(yīng)的時(shí)候,event-dispatching thread被事件響應(yīng)方法占據(jù),所以組件不會(huì)被更新。而直到事件響應(yīng)方法退出時(shí)才有可能去更新Swing組件。
為了解決這個(gè)問(wèn)題,有人也許會(huì)試圖通過(guò)調(diào)用repaint()方法來(lái)更新組件:

final String[] str = new String[1];  this.jTextArea1.setText("Please wait...");  this.repaint();   try {  Thread.sleep(1000L);  }catch(InterruptedException e) {  e.printStackTrace();  }  str[0] = "Done.";   jTextArea1.setText(str[0]);

關(guān)于“Swing組件相關(guān)的操作有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:Swing組件相關(guān)的操作有哪些
當(dāng)前URL:http://www.ekvhdxd.cn/article8/gdscop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、電子商務(wù)、全網(wǎng)營(yíng)銷(xiāo)推廣移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站制作、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站