GUI圖形界面編程總結之Frame,Panel


GUI:Graphical User Interface,即圖形用戶界面,用於計算機與用戶交互的一種方式

AWT:Abstract Window Toolkit,抽象窗口開發包。重量級組件。在Windows系統與Linux系統都可運行,但由於是調用操作系統實現的組件,在兩個平台運行后並不是完全相同,可移植性一般。

位於java.awt包中。

Swing:在AWT基礎上發展而來,輕量級組件,不依賴操作系統的支持,可移植性較好。

位於javax.swing包中。

java.AWT中主要的類:

image001

 

Component:封裝了組件通用的方法和屬性,如圖形的組件對象、大小、顯示位置、前景色和背景色、邊界、可見性等。其對象不能獨立顯示。

注意:組件包括基本組件與容器組件,容器組件用於容納其他組件

Container:封裝了容器組件類的通用的方法和屬性

注意:容器組件不但能容納基本組件,還能容納其他容器組件

Window:頂級窗口,可獨立存在

Panel: 確定一個四邊形,可以添加其他組件(add()方法),但必須放在Window或Window的子類之中,才能顯示出來。

Frame:可以添加其他組件(add()方法),具有標題和縮放角

Dialog 是一個帶標題和邊界的頂層窗口,邊界一般用於從用戶處獲得某種形式的輸入

TextComponent:允許編輯文本的組件的超類

TextField:創建文本框對象

TextArea:顯示文本的多行區域。可以將它設置為允許編輯或只讀

Button:標簽按鈕。當按下該按鈕時,應用程序能執行某項動作

Label:顯示一行只讀文本。文本可由應用程序更改,但是用戶不能直接對其進行編輯

Frame用法:

import java.awt.Color;
import java.awt.Frame;

/**
 * java GUI中Frame常用用法
 * 2014-4-14
 * @author Administrator
 *
 */
public class FrameDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //創建一個初始不可見的窗口f1(參數顯示標題)
        Frame f1=new Frame("The first frame");
        ////設置窗口大小(參數是寬度及高度,單位是像素)
        f1.setSize(23,45);
        ////設置窗口的位置(參數是坐標)
        f1.setLocation(15,20);
        //調用類的成員來顯示窗口顏色
        f1.setBackground(Color.blue);
        //設置是否可以調整大小
        f1.setResizable(true);
        //設置是否可見
        f1.setVisible(true);
        //創建一個初始不可見的窗口f2
        Frame f2=new Frame();
        //設置窗口位置大小
        f2.setBounds(70,140,50,200);
        f2.setBackground(Color.BLUE);
        //設置窗口標題
        f2.setTitle("The second frame");
        //設置是否可以調整大小
        f2.setResizable(false);
        //設置是否可見
        f2.setVisible(true);
        //獲得f2窗口標題
        System.out.println(f2.getTitle());
    }

}

通過繼承創建Frame窗口

import java.awt.*;
/**
 * java GUI中Frame類的繼承使用
 * 2014-4-15
 * @author Administrator
 *
 */
public class FrameDemo2 {

    private static final Color BLUE = null;
    private static final Color YELLOW = null;
    private static final Color RED = null;
    private static final Color GREEN = null;

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //Color類的常量大小寫用法一致,但建議用大寫,為了符合規范
        MyFrame f1=new MyFrame(100,100,200,200,Color.blue,"first");
        MyFrame f2=new MyFrame(300,100,200,200,Color.green,"second");
        MyFrame f3=new MyFrame(100,300,200,200,Color.orange,"third");
        MyFrame f4=new MyFrame(300,300,200,200,Color.CYAN,"Fourth");
    }
}


class MyFrame extends Frame{
    MyFrame(int x,int y,int a,int b,Color c,String s){
        //創建窗口的幾個主要元素:位置參數,大小,顏色,布局管理器,
        //s是否可以調整大小,是否可見
        super("This is my"+s+"frame");
        setBounds(x,y,a,b);
        setBackground(c);
        setResizable(true);
        //布局管理器
        setLayout(null);
        setVisible(true);
    }
}

創建嵌套窗口,Panel窗口嵌套在Frame中

import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
/**
 * java GUI Panel用法
 * 2014-4-15
 * @author Administrator
 *
 */

public class PanelDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Frame f=new Frame("Frame with Panel");
        f.setBounds(300, 300, 500, 500);
        f.setBackground(Color.LIGHT_GRAY);
        f.setResizable(true);
        f.setLayout(null);
        Panel p=new Panel(null);
        //Panel窗口的位置參數是以Frame窗口左上角為基准
        p.setBounds(50, 50,400, 400);
        //通過Color類三原色構造方法設置窗口顏色
        p.setBackground(new Color(0,0,254));
        //將Panel窗口添加到Frame中
        f.add(p);
        f.setVisible(true);
        
        
        
        
    }

}

繼承的寫法:

import java.awt.*;

public class TestMultiPanel {
    public static void main(String args[]) {
        new MyFrame2("MyFrameWithPanel",300,300,400,300);
    }
}


class MyFrame2 extends Frame{
    private Panel p1,p2,p3,p4;
    MyFrame2(String s,int x,int y,int w,int h){
        super(s);
        setLayout(null);
        p1 = new Panel(null); p2 = new Panel(null);
        p3 = new Panel(null); p4 = new Panel(null);
        p1.setBounds(0,0,w/2,h/2);
        p2.setBounds(0,h/2,w/2,h/2);
        p3.setBounds(w/2,0,w/2,h/2);
        p4.setBounds(w/2,h/2,w/2,h/2);
        p1.setBackground(Color.BLUE);
        p2.setBackground(Color.GREEN);
        p3.setBackground(Color.YELLOW);
        p4.setBackground(Color.MAGENTA);
        add(p1);add(p2);add(p3);add(p4);
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

參考資料:尚學堂馬士兵視頻教程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM