關於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) --------------------------------------------- <1>例:使用.setBounds(int,int,int,int)設置控件座標大小.必須加.setLayout(null); 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)錯誤: ~1:使用.setBounds(int,int,int,int)設置控件座標大小時必須加.setLayout(null); 按鈕b佔了全窗口按鈕a正常. frame.setLayout(null); --------------------------------------------- <2>例:添加Panel並設置.同時測試前後順次帶來的控件覆蓋. import java.awt.*; import java.awt.event.*; public class hh { Frame frame; Button a,b; Panel c;//添加一面板 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"); c=new Panel(); c.setBounds(70,30,100,500);//設其位置大小 c.setBackground(Color.blue); frame.add(a); a.setBounds(10,30,50,25); frame.add(b); frame.add(c);//在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)結果:控件所有顯示.若是將frame.add(c);置於frame.add(b);以前則c面板沒法查看. (2)代表:控件被添加的前後順續決定控件是否可見.即:窗口按層來顯示控件.先添加的控件放在第一層後添加的放在後一層.若是先添加的控件大小大於後添加的並兩控件處於同一位置則先添加的控件覆蓋後添加的.所以若是想然全部控件均可見則需將在同一位置的兩控件擇面積小的先添加然後纔是面積大的. --------------------------------------------- <3>例:窗口使用pack()調整自身大小 import java.awt.*; import java.awt.event.*; public class hh { Frame frame; Button a,b; public void go() { frame = new Frame(); frame.setLayout(new FlowLayout()); a=new Button("l"); b=new Button("okokkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); frame.add(a); frame.add(b); frame.pack(); //缺乏frame.setSize(200,500); frame.setVisible(true); } public static void main(String kio[]) { hh nu=new hh(); nu.go(); } } (1)結果:窗口自動調節並顯示出全部控件. (2)代表:Window 組件提供 pack() 方法來解決這個問題。當向窗口發送 pack() 時,窗口會調整自身大小,從而提供足夠的空間來顯示其框架中包含的全部控件。設計 GUI 屏幕時,老是指定固定的大小是危險的。此外,控件的位置不該該以 x 和 y 或寬度和高度的形式表示。每一個控件包含動態計算首選大小的方法,應該使用這些方法來給您的 GUI 帶來最大的流動性。 --------------------------------------------- <4>例:使用setColumns(int)設置組件大小 import java.awt.*; import java.awt.event.*; public class hh { Frame frame; TextField txt; public void go() { frame = new Frame(); frame.setLayout(new FlowLayout()); txt=new TextField(); txt.setColumns(20); frame.add(txt); frame.pack(); frame.setVisible(true); } public static void main(String kio[]) { hh nu=new hh(); nu.go(); } } ---------------------------------------------
相關文章
相關標籤/搜索