1. 程式人生 > >Java----AWT元件開發和Swing介面程式設計(一)

Java----AWT元件開發和Swing介面程式設計(一)

一、AWT元件開發

1、AWT入門

       AWT是抽象視窗工具箱的縮寫,它為編寫圖形使用者介面提供了使用者介面,通過這個介面就可以繼承很多方法,省去了很多工作。AWT還能使應用程式更好地同用戶進行互動。

       AWT中的容器是一種特殊的元件,他可以包含其他元件,即可以把元件方法容器中。Container類是用來存放其他元件的Component類的子類,Frame類又是Component的子類。Frame類用於建立具有標題欄和邊界的視窗。這裡通過繼承Frame類來建立自己的介面。

[java] view plain copy  print
?
  1. publicclass test extendsFrame{  
  2.     //建立構造器
  3.     public test() throws HeadlessException {  
  4.         this.setTitle("第一個視窗程式");  
  5.         //x , y是距離顯示器左上角的距離;w , h是視窗的長寬
  6.         this.setBounds(100100250250);  
  7.         //或者使用以下方式代替上面的一句程式碼
  8. //        this.setLocation(100, 100);
  9. //        this.setSize(250 , 250);
  10.         this.setVisible(true);  
  11.     }  
  12.     publicstaticvoid main(String[] str) {  
  13.         new test();  
  14.     }  
  15. }  

       上面是視窗中一些必不可少的東西,下面是一些視窗的基礎應用:

       >setTitle(“視窗”):定義視窗名稱

       >add(button):把按鈕新增到視窗中

       >setBackground(Color):設定視窗的背景顏色

       >setResizable(boolean):設定視窗大小是否可以改變

       >setAlwaysOnTop(boolean):設定視窗是否總在最上面

       >setBounds(x, y, w, h):設定視窗起始位置和大小

       >setVisible(boolean):設定視窗可見

       如果想建立多個視窗,只需要在主方法main()中建立多個物件就行了。

2、佈局管理器

       Java中的圖形介面在佈局管理上採用容器和佈局管理相分離的方案,也就是說容器只是把元件放進來,但它不管怎樣放置。至於如何放置需要用到佈局管理器。Java中有幾種佈局管理器,分別是:FlowLayout , BorderLayout, GridLayout和GardLayout。

       1)、FlowLayout

       FlowLayout佈局管理器是預設的佈局管理器,它將元件按照從左到右、從上到下的順序來安排,並在預設情況下使元件儘量居中放置。下面的程式碼要新增到test()類中:

        this.setLayout(new FlowLayout());

        //將按鈕元件放入容器中

        this.add(new Button("確定"));

        this.add(new Button("取消"));

       大家可以通過建立許多按鈕來觀察FlowLayout對元件的擺放規律,下面是使用一個按鈕監聽事件來實現按鈕的新增:

[java] view plain copy  print?
  1. publicclass test extendsFrame implements ActionListener{  
  2.     int i;  
  3.     Button b = new Button("Add");  
  4.     public test() throws HeadlessException {  
  5.         this.setTitle("第一個視窗程式");  
  6.         this.setLayout(new FlowLayout());  
  7.         this.add(b);  
  8.         b.addActionListener(this);  
  9.         this.setBounds(100100250250);  
  10.         this.setVisible(true);  
  11.     }  
  12.     @Override
  13.     publicvoid actionPerformed(ActionEvent e){  
  14.         i++;  
  15.         Button bi = newButton("Button" + i);  
  16.         this.add(bi);  
  17.         this.setVisible(true);  
  18.     }  
  19.     publicstaticvoid main(String[] str) {  
  20.         new test();  
  21.     }  
  22. }  

       在本程式中,由於按鈕的大小不同,其整體看起來不太整齊,但這更說明了FlowLayout佈局管理器的規則。

       2)、BorderLayout

       BorderLayout佈局管理器只允許在容器內放置5個元件,這5個元件的位置是由BorderLayout類中的North、South、East、West和Center5個常量來確定的,他們對應著容器中的上下左右中,用法如下:

       this.add(new Button(“按鈕”) ,BorderLayout.NORTH);

       this.add(new Button(“按鈕”) ,BorderLayout.CENTER);

       元件在BorderLayout中的大小都是可以改變的。一般情況下可以讓中間區域大一些,而且可以只用其中幾個區域。

       3)、GridLayout

       GridLayout佈局管理器是矩形網格,在網格中放置元件,每個網格的高度和寬度都相等,元件的排列順序與FlowLayout相同。元件隨著網格的大小而在水平和垂直方向上拉伸,網格的大小是由容器的大小和建立網格的多少來確定的。其用法如下:

       this.setLayout(newGridLayout(2 , 3)); //建立一個2行3列的網格

       this.add(new Button(“按鈕”));

       當元件數目大於網格數時,GridLayout保持行數不變而自動增加列數。

       4)、CardLayout

       CardLayout執行在一個元件中每次只顯示一組元件中的某一個,使用者可以根據需要來選擇使用哪個元件。CardLayout類提供瞭如下選擇元件的方法。

       >First(Container p):選擇容器中的第一個元件

       >last(Container p):選擇容器中的最後一個元件

       >next(Container p):選擇容器中當前元件的下一個元件

       >prebvious(Container p):選擇容器中當前元件的上一個元件

       >show(Container p ,String name):選擇容器中指定的元件

       前面幾種很容易理解,而show()方法來選擇容器中指定的元件。它的第一個引數是管理元件的容器,第二個引數是標識要顯示元件字串,該字串與將元件新增到容器時使用的字串相同。其用法如下:

[java] view plain copy  print?
  1. publicclass test extendsFrame implements ActionListener{  
  2.     Panel p = new Panel();  
  3.     Button bf = new Button("First");  
  4.     Button bl = new Button("Last");  
  5.     Button bn = new Button("next");  
  6.     Button bp = newButton("previous");  
  7.     Button bg = new Button("Go");  
  8.     TextField tf = new TextField();  
  9.     //設定CardLayout佈局管理器
  10.     CardLayout cl = new CardLayout();  
  11.     public test() throws HeadlessException {  
  12.         this.setTitle("CardLayout佈局管理器");  
  13.         this.setLayout(null);  
  14.         this.add(p);  
  15.         //定義p面板為CardLayout佈局管理器
  16.         p.setLayout(cl);  
  17.         //為CardLayout佈局管理器新增按鈕
  18.         for (int i = 1; i <= 10; i++) {  
  19.             Button btemp = newButton("Button" + i);  
  20.             p.add(btemp, "" + i);  
  21.         }  
  22.         //為每個元件設定大小位置並新增到容器中
  23.         p.setBounds(1040100100);  
  24.         this.add(bf);  
  25.         bf.addActionListener(this);  
  26.         bf.setBounds(120406020);  
  27.         this.add(bl);  
  28.         bl.addActionListener(this);  
  29.         bl.setBounds(120706020);  
  30.         this.add(bn);  
  31.         bn.addActionListener(this);  
  32. 相關推薦

    Java----AWT元件開發Swing介面程式設計()

    一、AWT元件開發 1、AWT入門        AWT是抽象視窗工具箱的縮寫,它為編寫圖形使用者介面提供了使用者介面,通過這個介面就可以繼承很多方法,省去了很多工作。AWT還能使應用程式更好地同用戶進行互動。        AWT中的容器是一種特殊

    java之 22天 GUI 圖形介面程式設計()

    GUI(圖形使用者介面) import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.WindowAdapter; import java

    Java Swing介面程式設計(31)---選單欄:JMenu

    package com.beyole.test; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JM

    Java Swing介面程式設計(12)---JPanel佈局

    package com.beyole.util; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.

    Java基礎總結之GUI圖形介面程式設計

    GUI和CLI: GUI:(Graphical User Interface)圖形使用者介面:用圖形的方式顯示計算機的操作介面。 CLI:(Command Line User Interface)命令列使用者介面:常見的Dos命令列操作。 awt和swing: awt:(Abstra

    java序列化機制Serialize介面

    java序列化機制 Serialize 介面 java本身的序列化機制存在問題: 1.序列化資料結果比較大,傳輸效率低 2.不能跨語言對接 XML編碼格式的物件序列化機制成為主流 序列化機制: MessagePack Protocol Buffers Du

    [java學習筆記]IteratorIterable介面

        Iterator和Iterable都是java的迭代器介面,二者既有區別又有聯絡,下面從介面定義,實現和方法呼叫三方面分析兩介面的關係和使用方法。 1.介面定義 1.1 Iterable     Iter

    Java應用程式開發學習之介面

    一、介面的抽象方法定義: 在任何版本的java中,介面都能定義抽象方法 格式: public abstract 返回值型別 方法名稱(引數列表); 注意事項: 1.介面當中的抽象方法,修飾符必須是兩個固定的關鍵字:public abstract 2.這兩個關鍵字修飾符,可以選擇性省略

    Python操作Excel, 開發呼叫介面,傳送郵件

    筆記: 上週回顧: 模組: 匯入模組的順序 lyl.py # def hhh(): pass name = 'lyl' a.py import lyl import sys from lyl import hhh

    java微信開發模板訊息介面使用

    微信開發--模板訊息介面 原理: 1.微信公眾號(服務號) 設定模板標題和模板內容--》生成模板ID 2.設定填充模板資料(使用map封裝),匹配Id,傳送給使用者。 package com.dm.wx.domain.templateMsg;import

    Java圖形介面程式設計()

    初步認識swing  awt   AWT(abstract Window Toolkit)是java釋出的第一個圖形介面庫。AWT通過呼叫系統本地的庫,來建立和顯示控制元件。 AWT 的元件都是使用

    Ubuntu下用gladeGTK+開發C語言介面程式()

    前言:對於大學中計算機系的每年暑假的課設有太多想說的,能從中學到很多東西,當然不排除打醬油的,這些可以掠過哦,凡事都打醬油,人生也是打醬油的吧。2333。 對於大三以前的課設一般的要求都是用C寫的,即使你學的面向物件很好,也只能老老實實的來用C寫。當然這其中還有好多要說道的

    Java設計第一原則:面向介面程式設計

    在專案中的意義:     在傳統的專案開發過程中,由於客戶的需求經常變化,如果不採用面向介面程式設計,那麼我們必須不停改寫現有的業務程式碼。改寫程式碼可能產生新的BUG,而且改寫程式碼還會影響到呼叫該業務的類,可能全都需要修改,影響系統本身的穩定性。而且為了將改寫程式碼帶來的影響最小,我們不得不屈服當前的系

    Vue開發音樂移動端實戰(1) —header頭部元件開發swiper輪播圖開發 以及利用JSONP獲取QQ音樂輪播圖資料

    首先做專案配置 安裝babel-polyfill這是es6語法轉化(在路由中引用的)babel-fastclick 去除移動端click點選的300毫秒延遲(在路由中index.js下寫入)import fastclick from 'fastclick'//引用 fastc

    java的lambda表示式 stream介面使用

    lambda格式 method(param->表示式); //或者 method(param->{ 語句塊; }); 示例 List<String> list=Lists.newArrayList(); list.add("jack"); list.add(

    Java數據結構算法()——簡介

    技術 其他 高程 度量 得出 rsh 基本功 represent 介紹 本系列博客我們將學習數據結構和算法,為什麽要學習數據結構和算法,這裏我舉個簡單的例子。   編程好比是一輛汽車,而數據結構和算法是汽車內部的變速箱。一個開車的人不懂變速箱的原理也是能開車的,同理一個不

    Java多執行緒記憶體模型():程序執行緒基礎

    Java多執行緒和記憶體模型(一) 由於java是執行在 JVM上 的,所以需要涉及到 JVM 的記憶體模型概念,需要理解記憶體模型,就需要多執行緒的基礎; 而執行緒是基於載體執行緒裡的,所以我們藉由作業系統的程序來講一講。 程序 什麼是程序?

    Java應用簡易開發框架SAF介紹(

    概述 SAF是一套簡易的開發Java應用系統的框架。SAF就是Simple Application Framework的縮寫。 說到Java應用開發框架,早些年我們用得最多的是Spring+Struts+Hibernate(簡寫為SSH),近些年用得更多的是Spring+SpringMVC+

    Java多線程並發(),進程與線程的區別

    img 分享 com image font str src spa .com 目錄 1.進程和線程的由來 2.進程和線程的定義 3.進程和線程的區別 一、進程和線程的區別 1.進程和線程的由來 2.進程和線程的定義   進程是資源分配的最小單位,線程是CPU調度的最

    Java自學之路-Java基礎教程-42:Java的UI介面AWTSwing元件

    在學Java的初期,其實很不情願地學,這面向物件的語言還是和C語言似的,沒有什麼介面的呢,也不能在桌面上執行呢。能不能像電腦裡的桌面軟體一樣,雙擊就可以開啟?能不能像其他桌面軟體一樣,可以輸入文字,可以有按鈕或選單什麼的?能不能搞出一個滑鼠點點就能用的軟體出來?其實Java也