




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1沒有鍵盤你能上機干什么?溜網看電影拷貝粘貼一篇論文……沒有鼠標呢?用鍵盤關機去找個鼠標想象過沒有鼠標的日子嗎?用過命令行程序嗎?感覺如何?2做別人會用,喜歡用的程序必須要有圖形用戶界面(GUI)你會發(fā)現這很酷我們會花4周時間來學習圖形用戶界面這是值得的!Java語言程序設計第7章JavaSwing圖形用戶界面4我們分階段完成下面的任務1.做一個光禿禿的窗口2.在窗口上畫畫3.往窗口上放些按鈕什么的4.做個體面的GUI5.讓GUI能有反應6.錦上添花5目標一:做一個光禿禿的窗口你需要先學習組件組件:窗口,以及窗口上面的按鈕,輸入框…每個組件對應一個類67一切都從窗口開始JFrame是框架窗口組件一個對象代表屏幕上的一個窗口JFrame的長相會根據所處的平臺會有不同Windows平臺上MaxOSX平臺上8框架窗口組件JFrame主要構造方法JFrame(),建立一個無標題的JFrame。JFrame(Stringtitle),建立一個標題為title的JFrame?;静僮鲃?chuàng)建窗口 JFrameframe=newJFrame();設置標題 frame.setTitle(“窗口示例”);
或者:
JFrameframe=newJFrame(“窗口示例”); 設置位置 setLocation(intx,inty)
設置大小 setSize(intwidth,intheight)
設置圖標
setIconImage(Iconicon)定義關閉行為
setDefaultCloseOperation(intoperation)9都有哪些關閉行為?setDefaultCloseOperation(intoperation)operation:DO_NOTHING_ON_CLOSE:當窗口關閉時,不做任何處理HIDE_ON_CLOSE:當窗口關閉時,隱藏這個窗口DISPOSE_ON_CLOSE:當窗口關閉時,隱藏并釋放窗口占有的其他資源(看演示)EXIT_ON_CLOSE:當窗口關閉時,退出程序默認是HIDE_ON_CLOSE1011//導入JFrame所在的包importjavax.swing.*;publicclassFrameDemo{publicstaticvoidmain(Stringargs[]){JFramejframe=newJFrame("Swing窗口");jframe.setSize(300,200);jframe.setVisible(true);jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}12//導入JFrame所在的包importjavax.swing.*;publicclassSecondWindowextendsJFrame{ publicSecondWindow(){ super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(480,240); setVisible(true);
}
publicstaticvoidmain(String[]args){ SecondWindoww=newSecondWindow(); }}13第2個任務:在窗口上畫畫14Q:在哪里畫?(繪圖表面)A:可以直接在JFrame上繪圖,當然還有其他,你可以自己去調查一下。Q:坐標系如何規(guī)定?(圖形環(huán)境)A:如圖:15Q:用什么畫?A:圖形上下文,java.awt.Graphics類的一個對象。Q:圖形上下文里都有什么?A:封裝有基本繪圖操作所需的信息。包括:要被繪制到其上的組件對象繪制和剪貼坐標的平移原點當前的剪貼區(qū)當前顏色當前的字體…16Q:用圖形上下文都能干什么?A:畫線g.drawLine(xcenter,ycenter,xs,ys);畫圓g.drawArc(xcenter-50,ycenter-50,100,100,0,360);
繪制字符串
g.drawString(lastdate,5,125)設置字體 FontclockFaceFont=newFont("Serif",Font.PLAIN,14); g.setFont(clockFaceFont);設置顏色
ColorhandColor=Color.blue; g.setColor(handColor);17關于Colorjava.awt.Color類定義了顏色常量和方法。每種顏色都是從RGB值創(chuàng)建出來的。 publicColor(intr,intg,intb);預定義了13個顏色常量(見Java文檔)
Color.BLACKColor.REDColor.black…….Color類的常用方法(見Java文檔)18關于Font
java.awt.Font類定義了文字的外觀字體對象的創(chuàng)建:FontclockFaceFont=newFont("Serif",Font.PLAIN,14);構造函數有3個參數:字體名稱、字體風格和字體大小。字體名稱:可以是運行程序的當前系統(tǒng)所支持的任何字體,字體風格:publicfinalstaticintPLAIN一個代表普通字體風格的常量publicfinalstaticintBOLD一個代表粗體字體風格的常量publicfinalstaticintITALIC一個代表斜體字體風格的常量也可以是BOLD與ITALIC的結合19Q:如何用圖形上下文畫圖?在JFrame上繪圖時,需要重寫Jframe組件的paint()方法publicvoidpaint(Graphicsg)在需要進行繪圖操作時,系統(tǒng)會將Graphics對象傳遞給paint方法這里的Graphics對象就是我們說的圖形上下文Graphics對象是系統(tǒng)傳遞過來的,所以你永遠不需要自己去創(chuàng)建它20使用Graphics類繪圖例21課后作業(yè)下載課件并復習構思一個銀行貸款管理系統(tǒng),它應該包括房貸計算器,貸款人員信息,還款記錄等。把界面畫下來,等我們以后來實現它。22第3個任務:往窗口上放些按鈕什么的(添加組件)23使用Swing組件的一些規(guī)則總結Swing組件從功能上分為容器組件原子組件原子組件必須加在容器組件內24容器組件分類頂層容器JFrame;JWindow;JApplet;對話框JDialog(JOptionPane)中間層容器面板Jpanel;
滾動窗格JScrollPane;拆分窗格JSplitPane;
標簽窗格JTabbedPane;
分層窗格JLayeredPane25頂層容器中間層容器1中間層容器2中間層容器3中間層容器4中間層容器5中間層容器5原子組件1原子組件2原子組件3原子組件4原子組件5原子組件6原子組件7原子組件8原子組件9原子組件1026原子組件分類基本組件
按鈕,組合框,列表,菜單,滑塊,工具欄,文本區(qū)可編輯的顯示組件表,文本,樹,顏色選擇器,文件選擇器,數值選擇器不可編輯的顯示組件
標簽,工具提示,進度條27往Jframe上添加組件publicclassWindowTextextendsJFrame{JTextFieldtext1,text2;
publicWindowText(){setLayout(newFlowLayout());text1=newJTextField("我不可編輯",10);text1.setEditable(false);text1.setHorizontalAlignment(JTextField.CENTER);text2=newJTextField(10);
this.getContentPane().add(text1);
this.getContentPane().add(text2);
this.getContentPane().setBackground(Color.RED);setBounds(100,100,236,150);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);
}}28創(chuàng)建一個簡單的GUI(四個步驟)//這里一定要先導入Swring組件所在的包importjavax.swing.*;publicclassCloseDemo1{publicstaticvoidmain(Stringargs[]){//步驟一:創(chuàng)建窗口JFrameframe=newJFrame("我的第一個窗口");//步驟二:創(chuàng)建組件JButtonbutton=newJButton("我的第一個按鈕");//步驟三:把組件加到窗口上去frame.getContentPane().add(button);//步驟四:顯示出來frame.setSize(300,300);frame.setVisible(true); }}29//導入JFrame所在的包importjavax.swing.*;publicclassSecondWindowextendsJFrame{ JButtonbutton; publicSecondWindow(){ super();
//步驟二:創(chuàng)建組件 button=newJButton("我的第一個按鈕"); //步驟三:把組件加到窗口上去 getContentPane().add(button); //步驟四:顯示出來 setSize(480,240); setVisible(true);
} publicstaticvoidmain(String[]args){ //步驟一:創(chuàng)建窗口
SecondWindoww=newSecondWindow(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}3031第4個任務:做個體面的GUI不體面體面32布局管理器幫助我們完成GUI的布局!每個容器都有自己的布局管理器每個容器同一時刻只能有一個布局管理器布局管理器的主要任務:決定容器里每個元素的大小決定元素之間的間隔決定元素的位置當窗口移動或大小發(fā)生變化時,它也要應對布局管理器的統(tǒng)治范圍33窗口面板A面板B按鈕1按鈕2按鈕3按鈕4按鈕5按鈕6按鈕7按鈕8窗口的布局管理器管面板A,B和按鈕1,管不了按鈕2-8面板A的布局管理器管按鈕2,3,4面板B的布局管理器管按鈕5,6,7,8,窗口和面板A,B的布局管理器可以是不同種類布局管理器如何決定34程序員你好,布局管理器。雖然我知道“用人不疑,疑人不用”這句話,但我還是很想知道,你是怎么做到的。畢竟,GUI的布局就是一張臉面,對我來說是非常非常重要的,事關名譽!我有知情權吧?布局管理器確實是的。如果一旦請了我,你就不能再多插手了。我呢,也不是一意孤行,我會詢問我所屬于的容器上個各個組件的意見,當然也不是都聽取。在尊重或部分他們的意愿的基礎上,來覺得各個組件的大小和位置。程序員那當窗口移動,或大小改變時,你還負責嗎?布局管理器當然,我會負責到底。35我就是不想用布局管理器,偏要自己來管理!程序員那我要是不請你呢?布局管理器其實各個容器都有缺省的布局管理器。所以即使你以為自己沒有請我們,默認的管理器也會為你工作。除非你明確的聲明,你不打算聘請我們。程序員怎么聲明?布局管理器容器對象有個setLayout()的方法,參數寫成null就行。程序員那如果我不聘請你們,我會怎么樣?布局管理器你會很慘。你必須使用setLocation(
),setSize(
),setBounds(
)等方法為組件設置大小和位置。程序員setLocation(
),setSize(
),setBounds(
)這些方法,在我請你幫我管理布局的時候也可以使用嗎?布局管理器當然不行。我給你管理布局時,這些方法統(tǒng)統(tǒng)失效。36本課程評選的四大首席布局管理器FlowLayout流式布局BorderLayout邊界式布局GridLayout網格式布局CardLayout卡片式布局忠告:了解它們的脾氣和能力,更好地為你所用吧!37FlowLayout流式布局管理器把組件從左向右、從上向下,一個接一個的放到容器中組件的位置會隨著窗口大小的變化而自動調整三種構造方法:publicFlowLayout()缺省居中對齊方式,組件間的水平和豎直間距為缺省值5個象素。publicFlowLayout(intalignment)使用指定的對齊方式(FlowLayout.LEFT,FlowLayout.RIGHT,FlowLayout.Center),水平和豎直間距為缺省值5象素。publicFlowLayout(intalignment,inthorizontalGap,intverticalGap)使用指定的對齊方式,水平和豎直間距也為指定值。38layout=newFlowLayout();container.setLayout(layout);leftButton=newJButton("左對齊");container.add(leftButton);centerButton=newJButton("中間對齊");container.add(centerButton);rightButton=newJButton("右對齊");container.add(rightButton);39BorderLayout邊界布局管理器將容器分成五個區(qū)域來安排組件: North、South、East、West、Center。構造函數BorderLayout()建立一個BorderLayout的對象,組件之間的缺省間隔(水平和垂直)為零。BorderLayout(inthgap,intvgap)建立一個BorderLayout的對象,組件之間的水平間隔為hgap,垂直間隔為vgap。40layout=newBorderLayout(5,5);container.setLayout(layout);
JButtonb1=newJButton(“北部");JButtonb2=newJButton(“南部");JButtonb3=newJButton(“東部");JButtonb4=newJButton(“西部");JButtonb5=newJButton(“中部");content.add(b1,“North”);content.add(b2,“South”);content.add(b3,“East”);content.add(b4,“West”,);content.add(b5,“Center”);41要是“東西南北中”缺一個咋辦?42GridLayout網格布局管理器容器中的各組件呈網格狀分布容器中各組件的高度和寬度相同容器大小變化時,各組件相對位置不變,但大小會變化各組件的排列方式為:從上到下,從左到右。43構造函數GridLayout():在一行中排列組件,組件之間的缺省間隔為零。GridLayout(introws,intcols):將容器分成rows行,cols列,組件之間的水平間隔和垂直間隔均為零。GridLayout(introws,intcols,inthgap,intvgap):將容器分成rows行,cols列,組件之間的水平間隔為hgap,垂直間隔為vgap。44grid=newGridLayout(2,3,5,5);container.setLayout(grid);JButtonb1=newJButton(“按鈕1");JButtonb2=newJButton(“按鈕2");JButtonb3=newJButton(“按鈕3");JButtonb4=newJButton(“按鈕4");JButtonb5=newJButton(“按鈕5");JButtonb6=newJButton(“按鈕6");content.add(b1);content.add(b2);content.add(b3);content.add(b4);content.add(b5);content.add(b6);45CardLayout卡片布局管理器容器中的所有組件如同撲克牌般的堆疊在一起為每張牌定義一個名字,可按名字選牌可以按順序向前或向后翻牌可以直接選第一張或最后一張牌46構造函數CardLayout():組件之間的缺省間隔為零。CardLayout(inthgap,intvgap):組件之間的水平間隔為hgap,垂直間隔為vgap。幾個常用方法
publicvoidshow(Containerparent,Stringname)publicvoidnext(Containerparent)publicvoidprevious(Containerparent)publicvoidfirst(Containerparent)publicvoidlast(Containerparent)47這里有三張撲克牌b1=newJButton("流式布局");b2=newJButton("邊界布局");b3=newJButton("網格布局");p1=newJPanel();p1.add(b1);p1.add(b2);p1.add(b3);card=newCardLayout();p2=newJPanel();p2.setLayout(card);p2.add("流式布局",newTestFlowLayout());p2.add("邊界布局",newTestBorderLayout());p2.add("網格布局",newTestGridLayout());48課后作業(yè)下載課件并復習編程實現你的銀行貸款管理系統(tǒng)的窗口,它可以沒有任何反應,有個外觀就可以了。49回憶開發(fā)GUI程序的步驟:構建一個頂層容器,通常是Jframe構建若干個組件,組件可以是其它容器(因為容器也是組件)設定各個容器的布局管理器用容器的add方法將這些組件加入到容器中50第5個任務:讓窗口有反應(關鍵部分)51按鈕Java您好。我是一個按鈕,程序員已經寫好了我被按下以后要執(zhí)行的代碼,您看這樣是不是就可以了。Java你想的太簡單了。如果用戶按了你,
你自己能去調用代碼嗎?你有這個本事嗎?我賦予你這個能力了嗎?按鈕對不起,我錯了。我沒這個本事。那你能幫我調用那段代碼嗎?Java可以,但你要按我的方式,做一些申請。52Java如何進行事件處理JDK1.1以后采取了授權處理機制(Delegation-basedModel),按鈕等組件可以把在其自身所有可能發(fā)生的事件分別授權給不同的事件處理者來處理。Java運行時系統(tǒng)無法直接調用開發(fā)人員提供的事件處理程序,開發(fā)人員必須事先令其將事件發(fā)送給自己提供的事件處理程序。53程序代碼。。。。。。。。事件監(jiān)聽器54程序代碼。。。。。。。。程序代碼按鈕大哥,如果有人按了你,就執(zhí)行我的這段代碼,好嗎?按鈕你找我的監(jiān)護人—事件監(jiān)聽器吧。我和它之間是有協(xié)議的,它會幫我處理這些事情。程序代碼監(jiān)聽器大哥,如果有人按了按鈕,請執(zhí)行我的這段代碼好嗎事件監(jiān)聽器好的。這正是我的職責。我會為按鈕負責的。不過,你的代碼要填在指定位置上,不然我可找不到你,別忘了。按鈕與事件監(jiān)聽器之間的協(xié)議55b1=newJButton(“按鈕");b1.addActionListener(事件監(jiān)聽器對象);程序代碼要填在什么位置上?publicclassMyGUIimplementsActionListener{publicvoidactionPerformed(ActionEvente){//加在這里?。?!}}事件發(fā)生時的處理流程56事件監(jiān)聽器對象第一步:用戶按下按鈕事件對象按鈕對象(事件源)第二步:系統(tǒng)傳遞事件對象給事件監(jiān)聽器對象第三步:事件監(jiān)聽器對象調用相應程序代碼57在事件處理的過程中,涉及的三類對象:事件源事件發(fā)生的場所,通常就是各個組件,如按鈕事件對象用戶對界面操作在java語言上的描述,對應不同的類。例如點擊按鈕對應的事件類是ActionEvent。
事件監(jiān)聽器對象事件處理者,接收事件對象并對其進行處理。58事件監(jiān)聽器對象所對應的類是誰寫的?有什么要求?是程序員要寫的這個類要實現某lisenter接口處理的事件不同,要實現的接口也不同(常用的是ActionListener,按鈕,文本框,菜單項等
)別忘了:實現接口,就要實現它定義的所有方法事件發(fā)生后要執(zhí)行的程序代碼必須放在這個類的指定位置上59publicclassTestButtonextendsJFrameimplementsActionListener{ privateJButtonbutton1; privateContainercontainer; publicTestButton(){ container=getContentPane(); container.setLayout(newFlowLayout()); button1=newJButton("Red");
button1.addActionListener(this); container.add(button1); setSize(300,75); setVisible(true); }
publicvoidactionPerformed(ActionEvente){ button1.setBackground(newColor(255,0,0)); } publicstaticvoidmain(String[]args){ TestButtont=newTestButton(); t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}事件處理程序的編寫步驟:編寫一個實現了某lisenter接口的類。在其中填寫用于事件處理的代碼。聲明該類的一個對象,如handler。調用組件的add某Listener(handler)方法。注冊事件監(jiān)聽器對象。60這樣做有時很煩!//CloseDemo1.javaimportjavax.swing.*;importjava.awt.event.*;publicclassCloseDemo1{publicstaticvoidmain(Stringargs[]){JFramejframe=newJFrame("關閉窗口例");//創(chuàng)建一個窗口jframe.setSize(400,100);//設置窗口大小jframe.setVisible(true);//使窗口可見myWinClosehandler=newmyWinClose();//聲明事件對象jframe.addWindowListener(handler);//注冊事件監(jiān)聽器}}//實現了WindowListener接口的類的定義classmyWinCloseimplementsWindowListener{ //關閉窗口的事件處理方法
publicvoidwindowClosing(WindowEvente){System.exit(0);} publicvoidwindowClosed(WindowEvente){} publicvoidwindowOpened(WindowEvente){} publicvoidwindowIconified(WindowEvente){} publicvoidwindowDeiconified(WindowEvente){} publicvoidwindowActivated(WindowEvente){} publicvoidwindowDeactivated(WindowEvente){}}有時,你只想做一點兒處理,可是你卻不得不實現接口的所有方法。即使是寫空方法體,也很煩?。?!61精簡事件處理程序的技巧之一:
使用監(jiān)聽器適配器//CloseDemo2.javaimportjavax.swing.*;importjava.awt.event.*;publicclassCloseDemo2{ publicstaticvoidmain(Stringargs[]){ JFramejframe=newJFrame("關閉窗口例"); jframe.setSize(400,100); jframe.setVisible(true); myWinClose2handler=newmyWinClose2(); jframe.addWindowListener(handler); }}//定義繼承于窗口適配器的類classmyWinClose2extendsWindowAdapter{ publicvoidwindowClosing(WindowEvente){System.exit(0);}}一個適配器類實現一個接口,并為該接口的所有方法提供默認實現(空方法體),從而允許我們僅僅覆蓋自己感興趣的少量方法。62//CloseDemo3.javaimportjavax.swing.*;importjava.awt.event.*;publicclassCloseDemo3{ publicstaticvoidmain(Stringargs[]){ JFramejframe=newJFrame("關閉窗口例"); jframe.setSize(400,100); jframe.setVisible(true);
jframe.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){System.exit(0);} }); }}精簡事件處理程序的技巧之二:
使用匿名內部類63精簡事件處理程序的技巧之三:
讓頂級類自己實現監(jiān)聽器接口或繼承監(jiān)聽器適配器
//CloseDemo4.javaimportjavax.swing.*;importjava.awt.event.*;publicclassCloseDemo4extendsWindowAdapter{
publicstaticvoidmain(Stringargs[]){ JFramejframe=newJFrame("關閉窗口例"); jframe.setSize(400,100); jframe.setVisible(true); jframe.addWindowListener(newCloseDemo4()); }//窗口關閉事件處理程序
publicvoidwindowClosing(WindowEvente){System.exit(0);}}64下面介紹大名鼎鼎的基本組件三大俠客:沒啥本事卻哪兒也少不了它的中庸俠標簽
果斷的
霹靂俠按鈕善于傾聽的知心俠文本框65中庸俠------標簽(JLabel)標簽顯示單行只讀文本、影像或者兩者兼有其內容可以是左、右或中間對齊的。默認情況是左對齊。主要構造方法如下:Jlabel():創(chuàng)建一個無文本也無影像的標簽;JLabel(Stringtext);創(chuàng)建一個帶有指定文本的標簽實例;JLabel(Iconimage):創(chuàng)建一個帶有指定影像的標簽實例。對鼠標事件有響應,要處理標簽上發(fā)生的鼠標事件,需要實現MouseListener和MouseMotionListener接口。6667霹靂俠------按鈕JButton按鈕表面所顯示的文本稱為按鈕標簽使用多個JButton時,應確保為每個按鈕提供唯一的標簽常用構造方法有:JButton():創(chuàng)建一個無標簽的按鈕;JButton(Stringtext):創(chuàng)建一個標簽為text的按鈕;JButton(Iconicon):創(chuàng)建一個圖標為icon的按鈕。單擊按鈕會引發(fā)事件ActionEvent,要處理需實現接口ActionListener。6869知心俠------文本框JTextField用戶可以通過鍵盤在該區(qū)域中輸入文本,或者程序在區(qū)域中顯示文本。JTextField的主要構造方法有:JTextField():創(chuàng)建一個空文本的文本框;JTextField(Stringtext):創(chuàng)建一個初始文本為text的文本框;JTextField(Stringtext,intcolumns):創(chuàng)建一個初始文本為text的文本框,并指定初始字段長度為columns。JTextField的主要方法有:voidsetFont(Fontf):設置字體;StringgetText():獲取文本框中的文本;voidsetText():設置文本;voidsetEditable(booleanb):設置文本框是否可編輯;voidsetHorizontalAlignment(intalignment):設置文本對齊方式??捎玫膶R方式有左對齊JTextField.LEFT,中間對齊JTextField.CENTER和右對齊JTextField.RIGHT。70JTextField包括兩個子類:JTextArea(可以輸入若干文本行)JPasswordField(不回顯輸入的內容)7172課后作業(yè)下載課件并復習給你的銀行貸款管理系統(tǒng)添加事件處理。
比如,
按下“確定”按鈕后,檢查用戶輸入信息是否完整;
按下“清除”按鈕后,清除窗口上的輸入內容;
按下“退出”按鈕后程序結束等。73第6個任務:錦上添花學習三大俠客之外的組件74單選按鈕(JRadioButton)單選按鈕通常成組出現一次只能選中該組中的一個單選按鈕必須使用ButtonGroup維護單選按鈕間的邏輯關系主要構造方法: JRadioButton():建立一個新的JRadioButton; JRadioButton(Stringtext,booleanselected):建立一個有文字的JRadioButton,且設置初始狀態(tài)(是否選中); JRadioButton(Stringtext,Iconicon):建立一個有文字且有圖像的JRadioButton建立組的方法:ButtonGroupgroup=newButtonGroup();//建立組group.add(radiobutton); //將單選鈕添加到組中75產生事件ItemEventItemEvent類的主要方法:ObjectgetItem():返回事件發(fā)生處的項目;ObjectgetResource():返回事件發(fā)生處的項目;intgetStateChange():返回生成事件的狀態(tài)改變類型,如果選中,返回的值為ItemEvent.SELECTED,否則,返回值為ItemEvent.DESELECTED。處理該事件應實現的接口為ItemListener接口中只有一個事件處理方法: publicvoiditemStateChanged(ItemEvente){}
767778復選框(JCheckBox)是一種復選框對象,可以選擇多項采用布爾值表示用戶所做的選擇常用構造方法如下:JCheckBox():建立一個新的JCheckBox;JCheckBox(Stringtext):建立一個有文字的JCheckBox;JCheckBox(Stringtext,booleanselected):建立一個有文字的JCheckBox,且設置其初始狀態(tài)(是否選中)。產生ItemEvent事件(同單選按鈕)79復選框(JCheckBox)80復選框(JCheckBox)81組合框(JComboBox)(下拉列表)提供一列選項,用戶可以在這列選項中進行單項選擇如果列表項的數目大于可顯示的行數時,自動提供一個滾動條組合框的常用構造方法:JComboBox():創(chuàng)建一個無選項的組合框組件;JComboBox(Object[]items):利用數組對象建立一個JComboBox組件;JComboBox(Vectoritems):利用向量對象建立一個JComboBox組件。組合框的常用方法有:voidaddItem(Objectobject):通過字符串類或其他類加入選項;intgetItemCount():獲取條目的總數;intgetSelectedIndex():獲得所選項的索引值(索引值從0開始)產生ItemEvent事件(同單選按鈕)8283列表(Jlist)可以讓用戶選擇一到多個選項.構造函數:JList():建立一個新的JList組件。JList(ListModeldataModel):利用ListModel建立一個新的JList組件.JList(Object[]listData):利用數組對象建立一個新的JList組件。JList(VectorlistData):利用向量對象建立一個新的JList組件。常用方法如下:voidsetSelectionMode(intselectionMode):設置選擇模式。單一選擇ListSelectionModel.SINGLE_SELECTION連續(xù)區(qū)間選擇ListSelectionModel.SINGLE_INTERVAL_SELECTION與多重選擇ListSelectionModel.MULTIPLE_INTERVAL_SELECTION(默認)voidsetSelectedIndex(intindex):通過索引值選擇某選項。voidsetVisibleRowCount(intn):設置可見行數。intgetSelectedIndex():單選時,獲得被選項索引。84JList的常用事件是取得用戶選取的項目時產生列表選擇事件(ListSelectionEvent)該事件可以檢測用戶是否對JList的選取有任何的改變接口是ListSelectionListener這個接口中只有一個方法: publicvoidvalueChanged(ListSelectionEvente){}8586進度條(
JProgressBar)必須和Timer配合使用主要構造方法:JProgressBar():創(chuàng)建一個水平進度條,顯示邊界,但沒有進度字符串。JProgressBar(intorient):創(chuàng)建一個指定方向的進度條。JProgressBar(intmin,intmax):創(chuàng)建一個指定最小值和最大值的水平進度條。JProgressBar(intorient,intmin,intmax):創(chuàng)建一個具有指定的方向、最小值和最大值的進度條。87時間組件(Timer)周期地觸發(fā)ActionEvent事件,使程序執(zhí)行指定的操作
構造方法有:Timer(intdelay,ActionListenerlistener):建立一個Timer組件,并在每一次delay的時間點上觸發(fā)ActionEvent事件。主要方法有:voidaddActionListener(ActionListenerlistener):注冊動作事件。voidstart():激活Timer組件。voidstop():停止Timer組件。voidrestart():重新激活Timer組件。voidsetDelay(intdelay):設置間隔時間。void
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掛車租出合同6篇
- 場地有償使用合同7篇
- 公寓式房屋轉租合同
- 廣告制作安裝合同書
- 臨街商鋪租賃合同
- 工程降水分包合同
- 土地利用規(guī)劃的制定與執(zhí)行指導書
- 員工租賃車輛協(xié)議
- 信封印刷合同6篇
- 圍墻工程包工合同
- 微信公眾號運營步驟
- 2024年河南省中職對口升學高考語文試題真題(解析版)
- 2023年貴州貴州貴安發(fā)展集團有限公司招聘筆試真題
- DB37T 4614.2-2023“愛山東”政務服務平臺移動端 第2部分:運營管理規(guī)范
- 初中數學新課程標準(2024年版)
- 《馬詩》教學課件新課學習
- 吊罐法掘天井安全技術操作規(guī)程(4篇)
- 2024年高考語文復習:酬和類古代詩歌閱讀 專項練習題匯編(含答案解析)
- GB/T 36547-2024電化學儲能電站接入電網技術規(guī)定
- 醫(yī)療廢物管理條例
- 消防工程常用設施三維圖解
評論
0/150
提交評論