新聞中心
程序中用Swing組件時(shí)應(yīng)注意,任何java程序都是由主線程中的main()方法開始執(zhí)行,當(dāng)main()方法中的JFrame調(diào)用setVisiable(true) 后,引發(fā)了另一個(gè)線程——事件分派線程,而actionPerformed()方法及paintComponent()方法都是在事件分派Swing線程中被調(diào)用,所以如果在actionPerformed()方法中有大量的耗時(shí)操作,將會(huì)導(dǎo)致用戶界面無法響應(yīng)用戶請求,造成用戶界面鎖死。在這種情況下,最好在 actionPerformed()方法中將耗時(shí)操作的程序部分移至一個(gè)新的Swing線程中實(shí)現(xiàn),這樣程序在進(jìn)行大量計(jì)算的同時(shí)又可以及時(shí)地響應(yīng)用戶請求。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供渝北網(wǎng)站建設(shè)、渝北做網(wǎng)站、渝北網(wǎng)站設(shè)計(jì)、渝北網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、渝北企業(yè)網(wǎng)站模板建站服務(wù),十載渝北做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
- packagetestswingguilock;
- importjavax.swing.*;
- importjava.awt.*;
- importjava.awt.event.*;
- publicclassTestSwingGUILock{
- TestSwingGUILock(){
- initGUI();
- }
- voidcostMoreTime(){
- doubled=0;
- //耗費(fèi)大量時(shí)間的操作
- for(inti=0;i
;i++) - d+=i;
- System.out.println("Ihavedosomanyworks!Theresultis"+d);
- }
- voidinitGUI(){
- JButtonjbutton=newJButton("Start");
- jbutton.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEvente){
- System.out.println("Youhavepressedme!");
- //將耗時(shí)操作放置在新的線程內(nèi)完成
- newThread(newRunnable(){
- publicvoidrun(){
- costMoreTime();
- }
- }).start();
- }
- });
- JFramejframe=newJFrame();
- Containercontainer=newContainer();
- container.setLayout(newBorderLayout());
- container.add(jbutton,BorderLayout.SOUTH);
- jframe.setContentPane(container);
- jframe.setSize(200,200);
- jframe.setVisible(true);
- jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- publicstaticvoidmain(String[]args){
- newTestSwingGUILock();
- }
- }
【編輯推薦】
- 淺談Java Swing的連接數(shù)據(jù)庫
- 介紹JFace、Swing、AWT和SWT
- 詳解SwingWorker與Swing程序
- 介紹輕量級(jí)Swing組件
- Swing組件都擴(kuò)展自JComponent
網(wǎng)頁題目:淺析Swing中actionPerformed()方法
瀏覽地址:http://www.dlmjj.cn/article/cogdpjc.html


咨詢
建站咨詢
