九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

java圖形界面程序設(shè)計(jì)補(bǔ)充講稿.doc

  • 資源ID:9634838       資源大小:148KB        全文頁數(shù):31頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

java圖形界面程序設(shè)計(jì)補(bǔ)充講稿.doc

圖形界面程序設(shè)計(jì)Part I:界面設(shè)計(jì)使用圖形組件類和容器類進(jìn)行GUI設(shè)計(jì)時(shí),需要引入相應(yīng)的包或者類。在Java 中,能夠?qū)崿F(xiàn)圖形用戶界面的類庫有兩個(gè):java.awt 和javax.swing。前者稱為抽象窗口工具庫AWT(Abstract Windows Toolkit),后者是Java 基礎(chǔ)類庫JFC(Java Foundation Classes)的一個(gè)組成部分,它提供了一套功能更強(qiáng)、數(shù)量更多、更美觀的圖形用戶界面組件。Swing 組件名稱和AWT 組件名稱基本相同,但以J 開頭,例如AWT 按鈕類的名稱是Button,在Swing 中的名稱則是JButton。在java中,AWT包中的類是用來處理圖形的最基本的方式,它是Sun公司早期所推出和使用的圖形組件包,其中的組件包含基本GUI組件類、容器類、布局管理類,事件處理類和基本圖形類這五種。AWT包中的組件被認(rèn)為是重量級組件,AWT在實(shí)際運(yùn)行中是調(diào)用所在平臺(tái)的圖形系統(tǒng),它們依賴于本地系統(tǒng)來支持繪圖與顯示,其運(yùn)行速度慢效果差,系統(tǒng)相關(guān)性較強(qiáng)。在1998年Sun Microsystem推出JDK1.2版本時(shí),新的javax.Swing包被增加到j(luò)ava的基礎(chǔ)類庫中。Swing包可以認(rèn)為是AWT包的升級。它不僅擁有幾倍于AWT包的用戶界面組件,而且同樣的組件,Swing包中的組件往往可設(shè)置屬性更多,功能更強(qiáng)大豐富。例如Swing包中按鈕(Button)的功能較AWT包中的按鈕功能更加強(qiáng)大,包括給按鈕添加圖像、使用快捷鍵以及設(shè)置按鈕的對齊方式,還可以給按鈕加入圖片做背景。Swing采用MVC(模型-視圖-控制)的設(shè)計(jì)范式,使程序員可以根據(jù)不同的操作系統(tǒng)來選擇不同的外觀。Swing組件完全是用Java代碼實(shí)現(xiàn)的,可以跨平臺(tái),使用Swing組件的程序在Mac、Windows或Unix平臺(tái)上的觀感都一樣。Swing組件通常被稱為輕量級組件。程序設(shè)計(jì)過程中最好不要混用Swing組件和AWT組件,雖然有時(shí)候也可以同時(shí)用,但有可能在視覺效果和響應(yīng)上造成不穩(wěn)定隱患。AWT包中常用的頂層容器為Frame、Dialog、Applet,中間層容器為Panel(中間層容器是一種可以放到頂層容器上的組件,它可以把頂層容器進(jìn)行進(jìn)一步的區(qū)域劃分以設(shè)計(jì)所需格局的界面)。常用的普通組件有Button、TextField、TextArea、Label、List等。Swing包中的組件分類主要為:(1)頂層容器:JFrame、JApplet、JDialog。(2)中間層容器:JPanel、JScrollPane、JSplitPane、JToolBar。(3)其它基本組件:JButton、JList、JTextField等。關(guān)于布局,其實(shí)每種容器都有默認(rèn)的布局,當(dāng)設(shè)計(jì)者沒有指定使用另外的布局時(shí),放到它上面的組件就會(huì)按默認(rèn)布局方式擺放。在AWT和Swing中都可對容器設(shè)置布局,都是調(diào)用容器對象的setLayout方法。布局有幾種,這里作簡單說明,具體請大家從示例程序的運(yùn)行以及JDK API文檔中查閱這些布局類的說明文檔來體會(huì):(1)FlowLayout布局:順序布局,有時(shí)又稱流式布局。使用該布局時(shí),容器上的元素會(huì)按容器顯示時(shí)的大小,按照從左到右、從上倒下的一行一行擺放下去。(2)BorderLayout布局:邊界布局。它可以把容器分為東西南北中5個(gè)方位,可以指定某個(gè)組件在哪個(gè)方位(但注意并非一定要有5個(gè)組件擺上去,不足5個(gè)也可指定位置擺放)。(3)GridLayout布局:網(wǎng)格布局??梢灾付ㄈ萜魃系脑匕磶仔袔琢械奈恢庙樞驍[放。(4)CardLayout布局:卡片布局。使用該布局的容器可放置多個(gè)組件,但同一時(shí)刻只能顯示其中一個(gè),就像一疊疊整齊的紙牌中每次只能最上面一張一樣??梢灾付膫€(gè)組件被顯示。(5)null布局:空布局。空布局并非沒有布局,而是容器被設(shè)置為這種布局以后,放到它上面的每個(gè)組件就可以通過setBounds(int a,int b,int width,int height)來設(shè)置其具體的位置。(6)另外還有BoxLayout(盒式布局)、GridBagLayout(網(wǎng)格包布局)等不常用布局。 在具體的程序設(shè)計(jì)時(shí),上述每一種布局都對應(yīng)是一個(gè)類,用它們定義出來的對象作為容器對象的setLayout方法的參數(shù),就可以把容器設(shè)置成該參數(shù)所對應(yīng)的布局了。仔細(xì)閱讀、體會(huì)、運(yùn)行和模仿學(xué)習(xí)后面的多個(gè)例子程序(注意代碼注釋中所提示的各種細(xì)節(jié)問題),我們可以最后再次總結(jié)出“界面設(shè)計(jì)”的步驟:(1)定義頂層容器對象。 (2)用容器對象的setLayout方法給容器設(shè)置一種布局。 (3)定義普通圖形組件。 (4)調(diào)用容器對象的add方法將普通圖形組件添加到容器上。 其中步驟(1)和(3)一般放在圖形界面程序類的成員變量聲明部分。(2)和(4)一般放在類的構(gòu)造函數(shù)部分。 最后在main函數(shù)中生成圖形界面程序類的實(shí)例運(yùn)行,顯示出界面來。 /* 例子3.1,關(guān)于容器Frame的使用。*/import java.awt.Frame;public class FrameApp public static void main(String args) Frame frame=new Frame(); /定義一個(gè)Frame容器對象frameframe.setSize(200,100);frame.setVisible(true); /注意Frame對象默認(rèn)是不可見的,嘗試注釋掉此句,你會(huì)發(fā)現(xiàn)看 /不到運(yùn)行結(jié)果的窗口出現(xiàn)。/* * 例子3.2,關(guān)于容器JFrame的使用。 同上例。 */import javax.swing.JFrame;public class JButtonApp public static void main(String args) JFrame jframe = new JFrame(); / 定義一個(gè)JFrame容器對象jframejframe.setSize(200, 100);jframe.setVisible(true);/ 注意JFrame對象默認(rèn)是不可見的,若注釋掉此句,你會(huì)發(fā)現(xiàn)看/ 不到運(yùn)行結(jié)果的窗口出現(xiàn)。jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/JFrame表面上可以關(guān)閉,/ 實(shí)際上只是被隱藏為不顯示。要真正可以關(guān)閉它,必須讓JFrame對象/ 調(diào)用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)這樣的方法來實(shí)現(xiàn)關(guān)閉功能。/* * 例子3.3,本例演示使用容器JFrame,設(shè)計(jì)一個(gè)基本的圖形界面程序的過程和方法。請注意注釋 * 所提示的一些應(yīng)該注意的細(xì)節(jié)問題。 */import java.awt.FlowLayout;import java.awt.Font;import java.awt.Color;import javax.swing.JButton;import javax.swing.JFrame;public class JButtonAppJFrame jf=new JFrame(); /定義設(shè)計(jì)圖形界面程序所需的容器對象JButton button1=new JButton("按鈕1"); /定義界面上需要的按鈕button1,以下類似JButton button2=new JButton("按鈕2");JButton button3=new JButton("按鈕3");public JButtonApp() /一般總是用構(gòu)造函數(shù)用于把普通組件添加到容器上構(gòu)造出界面來!jf.setLayout(new FlowLayout();/當(dāng)沒有使用任何布局的時(shí)候,JFrame容器只會(huì)顯示代碼中最 /后使用add方法添加上去的組件。假如這條設(shè)置布局的語句被 /注釋掉的話,程序運(yùn)行后界面上將會(huì)只顯示按鈕3這一個(gè)按鈕 jf.getContentPane().add(button1);/往容器上面添加按鈕button1。注意如果是往AWT中的Frame /容器對象上面添加任何組件的話,都是調(diào)用該對象的add方 /法,以組件對象名作為參數(shù)添加即可。但對于Swing中的 /JFrame,必須先通過getContentPane()方法獲取其內(nèi)容面 /板,然后再調(diào)用add方法添加組件。jf.getContentPane().add(button2);jf.getContentPane().add(button3);jf.getContentPane().setBackground(Color.RED); /把jf的背景色設(shè)置為紅色。button1.setFont(new Font("隸書",Font.PLAIN,20); /給按鈕button1設(shè)置字體。jf.setVisible(true);/JFrame容器對象默認(rèn)是不可見的,必須要設(shè)置為可見,界面才會(huì)出來。jf.pack(); /如果嘗試不調(diào)用pack函數(shù),默認(rèn)出來的界面不會(huì)顯示全部組件。pack的作用是使 /界面上的所有組件以最經(jīng)濟(jì)的方式全部顯示出來。public static void main(String args) JButtonApp jba=new JButtonApp(); /生成對象實(shí)例,在此過程中構(gòu)造函數(shù)會(huì)被調(diào)用 /運(yùn)行,界面即出現(xiàn)/* 例子3.4,本例演示容器Applet的使用。*/import java.applet.Applet;import javax.swing.JTextField;public class JTextFieldApp extends Applet /這是一個(gè)Applet程序,Applet實(shí)際上也是一種容器!JTextField jtxtfld1,jtxtfld2; /定義兩個(gè)JTextField類型的組件public void init()jtxtfld1=new JTextField(20); /生成對象實(shí)例jtxtfld2=new JTextField(20);add(jtxtfld1); /將組件添加到容器Applet上add(jtxtfld2); jtxtfld2.setEditable(false); /將其中的jtxtfld2設(shè)置為不可編輯的,即不能往里輸入東西/* 例子3.5,本例演示FlowLayout布局(順序布局)的使用。這種布局就是按照調(diào)用add方法添加組件的順序* 從左到右、從上到下擺放組件,下面的程序中的5個(gè)按鈕就是按照這樣布局的。*/import java.awt.*;import java.awt.event.*;public class FlowLayoutApp extends Frame /這個(gè)例子程序不是在程序中定義Frame容器對象作為 /容器,而是繼承自Frame類。這隱含著是以Frame作 /為頂層容器。public FlowLayoutApp() /構(gòu)造函數(shù)super("An FlowLayout Example"); /調(diào)用父類的構(gòu)造函數(shù)設(shè)置頂層容器的標(biāo)題setLayout(new FlowLayout();setBackground(Color.green); /以綠色作為界面的背景色setVisible(true); /容器設(shè)置為可見add(new Button("按鈕1"); /添加一個(gè)按鈕到容器上面add(new Button("按鈕2"); add(new Button("按鈕3"); add(new Button("按鈕4"); add(new Button("按鈕5"); pack(); /使界面上的元素在程序一運(yùn)行之后,就全部顯示出來。public static void main(String args)FlowLayoutApp fla=new FlowLayoutApp(); /生成對象實(shí)例/* * 例子3.6,本例演示BorderLayout布局(邊界布局)的使用。這種布局會(huì)把容器上的組件按照 * 東西南北中各個(gè)方位進(jìn)行排列。可以通過參數(shù)具體指定某個(gè)組件在東西南北中的哪一個(gè)方向。 * 通過這種布局,可以把容器細(xì)分為幾個(gè)部分,以便設(shè)置更好的界面。請注意并不是一定要東 * 西南北中五個(gè)方向都要放組件的。不足五個(gè)的組件同樣可以分別被指定放在容器上東西南北 * 中的任何一個(gè)方位。自己可以嘗試放置少于五個(gè)組件的情況。 */import javax.swing.JButton;import javax.swing.JFrame;public class BorderLayoutAppJFrame jf;JButton eastButton;JButton southButton;JButton westButton;JButton northButton;JButton centerButton;public BorderLayoutApp()jf=new JFrame("這是一個(gè)演示BorderLayout布局的例子程序");eastButton=new JButton("東按鈕");southButton=new JButton("南按鈕");westButton=new JButton("西按鈕");northButton=new JButton("北按鈕");centerButton=new JButton("中央按鈕");jf.add(eastButton,"East"); /注意:Frame容器的默認(rèn)布局就已經(jīng)是BorderLayoutjf.add(southButton,"South");jf.add(westButton,"West"); jf.add(northButton,"North");jf.add(centerButton,"Center");jf.setVisible(true);jf.pack();public static void main(String args)BorderLayoutApp bla=new BorderLayoutApp();/*例子3.7,本例演示null布局(順序布局)的使用。有時(shí)會(huì)用到null布局(即無布局管理器),程序員必須自己為容器中的組件設(shè)置大小和位置,因此其好處是可以隨心所欲地設(shè)置組件的大小和位置得到自己想要的布局,但跨平臺(tái)使用時(shí),界面可能發(fā)生變化,且程序編寫和調(diào)試相對比較繁瑣,示例如下。*/import javax.swing.JButton;import javax.swing.JFrame;public class NullLayoutAppJFrame jfr=new JFrame("null布局的使用示例");JButton b1=new JButton("open");JButton b2=new JButton("close");JButton b3=new JButton("ok");public NullLayoutApp() /構(gòu)造函數(shù),用于生成圖形程序的界面jfr.setSize(300,300); /設(shè)置容器對象jfr的寬度和高度jfr.setLayout(null); /設(shè)置為null布局。注意null四個(gè)字母全部小寫!b1.setSize(80,20); /設(shè)置按鈕b1的寬度和高度b1.setLocation(10,30); /設(shè)置按鈕b1在界面上的左上角的位置坐標(biāo)b2.setSize(90,40);b2.setLocation(40,60);b3.setSize(100,50);b3.setLocation(100,80);jfr.add(b1); /依次將每個(gè)組件添加到容器上jfr.add(b2);jfr.add(b3);jfr.setResizable(true);jfr.setVisible(true);/jfr.pack(); 注意:使用null布局之后,pack方法反而不需要使用了!public static void main(String args)NullLayoutApp nla=new NullLayoutApp(); /定義對象實(shí)例,調(diào)用構(gòu)造函數(shù)生成界面Swing的一些應(yīng)用示例1、 Swing和AWT的區(qū)別2、 容器類:JFrame、JApplet、JDialog、JComponent普通組件類:JButton、JTextField、JTextArea、JLabel。輔助類:Color、Font、LayoutManager。下面的例子都將基于Swing。3、 創(chuàng)建一個(gè)框架import javax.swing.JFrame;public class MyFramepublic static void main(String args) JFrame frame = new JFrame("我的第一個(gè)界面");frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);4、 向框架中添加組件:import javax.swing.JButton;import javax.swing.JFrame;public class MyFramepublic static void main(String args) JFrame frame = new JFrame("我的第一個(gè)界面");JButton button= new JButton("按鈕");frame.add(button); /JDK5之后允許直接如此調(diào)用將組件放在內(nèi)容面板中frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);5、 布局管理器,此例開始盡量將界面設(shè)計(jì)放在構(gòu)造函數(shù)中,便于類被復(fù)用等。/先看一個(gè)FlowLayout的例子import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);add(new JLabel("學(xué)號:");add(new JTextField(8);add(new JLabel("性別");add(new JTextField(2);add(new JLabel("姓名:");add(new JTextField(8);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);6、 GridLayout,寫一個(gè)例子或改改上例試試看? 行數(shù)列數(shù)不能同時(shí)為0. 行列都不為0的情況下,行數(shù)是主導(dǎo)參數(shù)。7、 BorderLayout,寫一個(gè)例子測試看看。8、 用JPanel(面板)作為子容器細(xì)化界面設(shè)計(jì):import java.awt.*;import javax.swing.*;public class TestPanels extends JFrame public TestPanels() / Create panel p1 for the buttons and set GridLayout JPanel p1 = new JPanel(); p1.setLayout(new GridLayout(4, 3); / Add buttons to the panel for (int i = 1; i <= 9; i+) p1.add(new JButton("" + i); p1.add(new JButton("" + 0); p1.add(new JButton("Start"); p1.add(new JButton("Stop"); / Create panel p2 to hold a text field and p1 JPanel p2 = new JPanel(new BorderLayout(); p2.add(new JTextField("Time to be displayed here"), BorderLayout.NORTH); p2.add(p1, BorderLayout.CENTER); / add contents into the frame add(p2, BorderLayout.EAST); add(new JButton("Food to be placed here"), BorderLayout.CENTER); /* Main method */ public static void main(String args) TestPanels frame = new TestPanels(); frame.setTitle("The Front View of a Microwave Oven"); frame.setSize(400, 250); frame.setLocationRelativeTo(null); / Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 9、 Color類如 : Color color = new Color(128,100,100);import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JButton button = new JButton("按鈕");add(new JLabel("學(xué)號:");add(new JTextField(8);add(new JLabel("性別");add(new JTextField(2);add(new JLabel("姓名:");add(new JTextField(8);Color color = new Color(150,100,100); button.setBackground(color); /或改成RED試試?button.setForeground(Color.blue);add(button);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);10、 Font類public Font(String name, int style, int size);import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JButton button = new JButton("按鈕");add(new JLabel("學(xué)號:");add(new JTextField(8);add(new JLabel("性別");add(new JTextField(2);add(new JLabel("姓名:");add(new JTextField(8);Color color = new Color(150,100,100); button.setBackground(color); /或改成RED試試?button.setForeground(Color.blue);Font font = new Font("黑體",Font.PLAIN,22); /字體設(shè)置button.setFont(font);add(button);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);11、看點(diǎn)GUI組件的一些其它普遍特性,比如給面板設(shè)置邊界,給按鈕設(shè)置提示(鼠標(biāo)放上去會(huì)有提示):import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.TitledBorder;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JPanel jp = new JPanel(new FlowLayout(); /在上例基礎(chǔ)使用面板JButton button = new JButton("按鈕");jp.add(new JLabel("學(xué)號:");jp.add(new JTextField(8);jp.add(new JLabel("性別");jp.add(new JTextField(2);jp.add(new JLabel("姓名:");jp.add(new JTextField(8);add(jp);jp.setBorder(new TitledBorder("一些組件放在本JPanel中");/給面板設(shè)置邊界button.setToolTipText("請點(diǎn)擊本按鈕繼續(xù)"); /鼠標(biāo)放到按鈕上會(huì)有提示Color color = new Color(150,100,100); button.setBackground(color); /或改成RED試試?button.setForeground(Color.blue);Font font = new Font("黑體",Font.PLAIN,22); /字體設(shè)置button.setFont(font);add(button);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);12、其實(shí)上面所說的顏色、邊界、鼠標(biāo)提示等是一般GUI組件都有的特性。比如下例在上面的例子基礎(chǔ)上給一個(gè)添加進(jìn)去的JTextField也增加了提示。import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.TitledBorder;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JPanel jp = new JPanel(new FlowLayout(); /在上例基礎(chǔ)使用面板JButton button = new JButton("按鈕");JTextField jt = new JTextField(16); /在上例基礎(chǔ)上增加文本框jp.add(new JLabel("學(xué)號:");jp.add(new JTextField(8);jp.add(new JLabel("性別");jp.add(new JTextField(2);jp.add(new JLabel("姓名:");jp.add(new JTextField(8);add(jp);jp.setBorder(new TitledBorder("一些組件放在本JPanel中");/給面板設(shè)置邊界button.setToolTipText("請點(diǎn)擊本按鈕繼續(xù)"); /鼠標(biāo)放到按鈕上會(huì)有提示Color color = new Color(150,100,100); button.setBackground(color); /或改成RED試試?button.setForeground(Color.blue);Font font = new Font("黑體",Font.PLAIN,22); /字體設(shè)置button.setFont(font);add(button);jt.setToolTipText("請?jiān)诖溯斎雰?nèi)容"); /給文本框設(shè)置提示內(nèi)容add(jt);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);13、圖像圖標(biāo)(先得準(zhǔn)備一點(diǎn)測試用的圖片)ImageIcon icon = new ImageIcon(“image/pic.gif”);import javax.swing.*;import java.awt.*;public class TestImageIcon extends JFrame private ImageIcon usIcon = new ImageIcon("image/us.gif"); private ImageIcon myIcon = new ImageIcon("image/my.jpg"); private ImageIcon frIcon = new ImageIcon("image/fr.gif"); private ImageIcon ukIcon = new ImageIcon("image/uk.gif"); public TestImageIcon() setLayout(new GridLayout(1, 4, 5, 5); add(new JLabel(usIcon); add(new JLabel(myIcon); add(new JButton(frIcon); add(new JButton(ukIcon); /* Main method */ public static void main(String args) TestImageIcon frame = new TestImageIcon(); frame.setTitle("TestImageIcon"); frame.setSize(500, 125); frame.setLocationRelativeTo(null); / Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 14、更多其它組件應(yīng)用和測試:JList、JComboBox、JCheckBox、JRadioButton、JScrollBar等圖形界面程序設(shè)計(jì)Part II:事件處理15、事件 和 事件源事件:點(diǎn)擊按鈕、鍵盤輸入、鼠標(biāo)移動(dòng)。事件源:如按鈕等。圖形界面程序是事件驅(qū)動(dòng)的,當(dāng)用戶與程序之間交互時(shí)產(chǎn)生事件,觸發(fā)程序中的事件處理代碼。事件一般分為用戶事件和系統(tǒng)事件。通常關(guān)注比較多的是用戶事件。典型的交互和要處理的用戶事件包括用戶移動(dòng)鼠標(biāo)、單擊鼠標(biāo),點(diǎn)擊按鈕、點(diǎn)擊下拉列表框或選項(xiàng)卡、在文本框中輸入內(nèi)容后回車、點(diǎn)擊菜單項(xiàng)或關(guān)閉圖形窗口等。事件處理,處理的是誰的事件?實(shí)際上處理的就是界面上的組件的事件。比如被點(diǎn)擊的按鈕,被輸入內(nèi)容后按下了回車鍵的單行文本框等等。事件的處理并非自動(dòng)完成。事件發(fā)生后,應(yīng)該產(chǎn)生什么結(jié)果,其實(shí)完全是由程序設(shè)計(jì)者所設(shè)計(jì)的代碼來決定由每一行具體的程序代碼來指定在事件發(fā)生后,界面上的各個(gè)組件產(chǎn)生什么顯示結(jié)果,或者產(chǎn)生什么改變。Java事件處理的機(jī)制是產(chǎn)生一個(gè)事件的對象必須設(shè)定其事件處理的監(jiān)聽者對象(Listener)。當(dāng)事件發(fā)生時(shí),監(jiān)聽者便會(huì)依據(jù)事件的類型來執(zhí)行相應(yīng)的程序。要處理一個(gè)對象所產(chǎn)生的事件,首先必須注冊該對象的監(jiān)聽者。Java.awt.event包中按照不同的事件類型定義了11個(gè)監(jiān)聽器接口,每類事件都有對應(yīng)的事件監(jiān)聽器,監(jiān)聽器實(shí)際上就是接口,接口中定義了事件發(fā)生時(shí)可調(diào)用的、必須要實(shí)現(xiàn)的方法,一個(gè)類可實(shí)現(xiàn)監(jiān)聽器的一個(gè)或多個(gè)接口。與AWT事件有關(guān)的所有事件都是由java.awt.AWTEvent類派生而來的。系統(tǒng)對事件進(jìn)行了分類。每一種事件用一種系統(tǒng)定義好的系統(tǒng)類來表示。不同的組件會(huì)對應(yīng)產(chǎn)生不同的事件,也就對應(yīng)到不同的事件類。而每一種事件類,又對應(yīng)要實(shí)現(xiàn)(implements)不同的接口。而每一個(gè)接口中,又有一個(gè)或者多個(gè)方法必須要被實(shí)現(xiàn)(這也是接口被implements時(shí)的語法要求),這些方法中的代碼,就是對應(yīng)的事件的具體的處理代碼。常見的AWT事件以及與其關(guān)聯(lián)的組件如下表所示,Swing也是類似的。另外,由于監(jiān)聽器實(shí)際上就是實(shí)現(xiàn)了相應(yīng)接口的類,而接口一般要求實(shí)現(xiàn)許多方法,如接口WindowListener中有7個(gè)方法,并不是所有方法都是需要的,但接口卻要求實(shí)現(xiàn)其所有的方法。為了簡化,java語言為一些接口統(tǒng)一提供了事件適配器(Adapter)。事件適配器是抽象類。通過繼承事件適配器,重寫需要的方法,不要的方法可以不寫。例如Java.awt.event包中提供了以下幾個(gè)事件適配器:ComponentAdapter組件適配器,ContainerAdapter容器適配器,F(xiàn)ocusAdapter焦點(diǎn)適配器,KeyAdapter鍵盤適配器,MouseAdapter鼠標(biāo)適配器,MouseMotionAdapter鼠標(biāo)移動(dòng)適配器,WindowAdapter窗口適配器。表4-1 常見的AWT事件及其關(guān)聯(lián)組件、接口、方法事件類可關(guān)聯(lián)的組件要實(shí)現(xiàn)的接口接口中必須實(shí)現(xiàn)的方法ActionEventButton,List,MenuItem,TextFieldActionListenerActionPerformed(Actionevent e)ItemEventCheckbox,Choice,List,MenuItemItemListenerItemStateChanged(ItemEvent eContainerEventContainer,Dialog,Frame,Panel,ScrollPane,WindowContainerListenercomponentAdded(ContainerEvent e)componentRemoved()MouseMotionEventButton,Canvas,Checkbox,choice,Component,Container,Dialog,Frame,Label,List,Panel,Scrollbar,ScrollPane,TextArea,TextField,WindowMouseMotionListenermouseGragged(MouseEvent e)mouseMoved(MouseEvent e)MouseEvent同MouseMontionEventMouseListenermousePressed(MouseEvent e)mouseReleased()mouseEntered()mouseExited()mouseClicked()KeyEvent同MouseMontionEventKeyEventkeyPressed(KeyEvent e)keyReleased()keyTyped()FocusEvent同MouseMontionEventFocusListenerfocusGained(FocusEvent e)focusLost(FocusEvent e)AdjustmentEventScrollbarAdjustmentListeneradjustmentValueChanged(AdjustmentEvent e)ComponentEvent同MouseMontionEventComponentListenerComponentMoved(ComponentEvent e)ComponentHidden()ComponentResized()ComponentShown()TextEventTextField,TextAreaTextListenertextValueChanged(TextEvent e)WindowEventDialog,Frame,WindowWindowListenerWindowClosing(WindowEvent e)WindowOpened()WindowIconified()WindowClosed()WindowDeiconfied()WindowActivated()WindowDeactivated()總結(jié)一下,圖形界面程序設(shè)計(jì)中的事件處理的步驟是:首先要讓可能產(chǎn)生事件的組件對事件進(jìn)行監(jiān)聽,那么就要實(shí)現(xiàn)監(jiān)聽器接口,實(shí)現(xiàn)(implements)了接口的話,就必須要實(shí)現(xiàn)接口中所有的方法(這些方法就是具體進(jìn)行事件處理的代碼)。每個(gè)組件的事件處理,在程序代碼設(shè)計(jì)上都是要處理這三點(diǎn)。下面我們以例子程序來進(jìn)行演示和體會(huì)。import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JTextField;/解決實(shí)驗(yàn)題目中,判斷字符串為空的幾種方法public class EmptyTest implements ActionListenerJFrame jFrame=new JFrame("JFrame");JTextF

注意事項(xiàng)

本文(java圖形界面程序設(shè)計(jì)補(bǔ)充講稿.doc)為本站會(huì)員(jian****018)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!