天天看點

關于GUI界面的布局與建立(初步)

關于GUI界面的布局與建立(初步)

+++++++++++++++++++++++++++++++++++++++++++++++

犭總結彡

***錯誤記錄:

~1:使用.setBounds(int,int,int,int)設定控件坐标大小時必須加.setLayout(null);

按鈕b占了全視窗按鈕a正常.

frame.setLayout(null);

---------------------------------------------

<1>例:使用.setBounds(int,int,int,int)設定控件坐标大小.必須加.setLayout(null);

<2>例:添加Panel并設定.同時測試先後順次帶來的控件覆寫.

<3>例:視窗使用pack()調整自身大小來建立視窗

<4>例:使用setColumns(int)設定元件大小

***一般性設定控件位置和大小:使用.setBounds(int,int,int,int)設定控件坐标大小.但必須加.setLayout(null);

***控件被添加的先後順續決定控件是否可見.即:視窗按層來顯示控件./*先添加的控件放在第一層後添加的放在後一層.*/如果先添加的控件大小大于後添加的并兩控件處于同一位置則先添加的控件覆寫後添加的.是以如果想然所有控件都可見則需将在同一位置的兩控件擇面積小的先添加而後才是面積大的.

***固定座标(根據絕對座标對控件定位稱為絕對定位)的問題:标簽内的字元串可能被翻譯成另一種語言,或者使用者可能調整了視窗的大小。在兩種情況下,按鈕都會保持固定在它們最初的位置

***使用固定座标的優點:自由設定控件位置大小.

***使用固定座标的缺點:視窗改變時許多控件無法顯示.字型變化後按鈕标簽等控件無法顯示其全部内容.

***pack()的使用:Window 元件提供 pack() 方法來解決這個問題。當向視窗發送 pack() 時,視窗會調整自身大小,進而提供足夠的空間來顯示其架構中包含的所有控件。設計 GUI 螢幕時,總是指定固定的大小是危險的。此外,控件的位置不應該以 x 和 y 或寬度和高度的形式表示。每個控件包含動态計算首選大小的方法,應該使用這些方法來給您的 GUI 帶來最大的流動性。

***計算控件大小的方法:

按鈕 |顯示目前标簽文本 |setLabel(String)或 setText(String)

文本 |顯示很多字元 |setColumns(int)

标簽 |顯示标簽的文本 |setLabel(String)或 setText(String)

文本域 |顯示很多字元的行和列 |setRows(int)和 setColumns(int)

import java.awt.*;

import java.awt.event.*;

public class hh

{

Frame frame;

Button a,b;

public void go()

frame = new Frame();

frame.setBounds(100,100,150,70);

frame.setBackground(Color.red);

frame.setLayout(null);//必須加

a=new Button("a");

b=new Button("b");

frame.add(a);

a.setBounds(10,30,50,25);

frame.add(b);

b.setBounds(70,30,100,28);

frame.setSize(200,500);

frame.setVisible(true);

}

public static void main(String kio[])

hh nu=new hh();

nu.go();

(1)結果:正常的按照上述所要求的制做了确定控件坐标和大小的視窗.

(2)錯誤:

Panel c;//添加一面闆

c=new Panel();

c.setBounds(70,30,100,500);//設其位置大小

c.setBackground(Color.blue);

frame.add(c);//在b後添加它

(1)結果:控件全部顯示.如果将frame.add(c);置于frame.add(b);之前則c面闆無法檢視.

(2)表明:控件被添加的先後順續決定控件是否可見.即:視窗按層來顯示控件.先添加的控件放在第一層後添加的放在後一層.如果先添加的控件大小大于後添加的并兩控件處于同一位置則先添加的控件覆寫後添加的.是以如果想然所有控件都可見則需将在同一位置的兩控件擇面積小的先添加而後才是面積大的.

<3>例:視窗使用pack()調整自身大小

frame.setLayout(new FlowLayout());

a=new Button("l");

b=new Button("okokkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");

frame.pack(); //缺少frame.setSize(200,500);

(1)結果:視窗自動調節并顯示出所有控件.

(2)表明:Window 元件提供 pack() 方法來解決這個問題。當向視窗發送 pack() 時,視窗會調整自身大小,進而提供足夠的空間來顯示其架構中包含的所有控件。設計 GUI 螢幕時,總是指定固定的大小是危險的。此外,控件的位置不應該以 x 和 y 或寬度和高度的形式表示。每個控件包含動态計算首選大小的方法,應該使用這些方法來給您的 GUI 帶來最大的流動性。

TextField txt;

txt=new TextField();

txt.setColumns(20);

frame.add(txt);

frame.pack();