1. 程式人生 > >十. 圖形界面(GUI)設計4.面板

十. 圖形界面(GUI)設計4.面板

etc 區域 tar n) bar public view gui 滾動面板

面板有兩種,一種是普通面板(JPanel),另一種是滾動面板(JScrollPane)。

JPanel

面板是一種通用容器,JPanel的作用是實現界面的層次結構,在它上面放入一些組件,也可以在上面繪畫,將放有組件和有畫的JPanel再放入另一個容器裏。JPanel的默認布局為FlowLayout。

面板處理程序的基本內容有以下幾個方面:

  1. 通過繼承聲明JPanel類的子類,子類中有一些組件,並在構造方法中將組件加入面板。
  2. 聲明JPanel子類對象。
  3. 創建JPanel子類對象。
  4. 將JPanel子類對象加入到某個容器。


JPanel類的常用構造方法有:

  1. JPanel(),創建一個JPanel對象。
  2. JPanel(LayoutManager layout),創建JPanel對象時指定布局layout。


JPanel對象添加組件的方法:

  1. add(組件),添加組件。
  2. add(字符串,組件),當面板采用GardLayout布局時,字符串是引用添加組件的代號。


【例 11-4】小應用程序有兩個JPanel子類對象和一個按鈕。每個JPanel子類對象又有兩個按鈕和一個標簽。
import java.applet.*;
import javax.swing.*;
class MyPanel extends JPanel{
JButton button1,button2;
JLabel Label;
MyPanel(String s1,String s2,String s3){
//Panel對象被初始化為有兩個按鈕和一個文本框
button1=new JButton(s1);button2=new JButton(s2);
Label=new JLabel(s3);
add(button1);add(button2);add(Label);
}
}
public class J504 extends Applet{
MyPanel panel1,panel2;
JButton Button;
public void init(){
panel1=new MyPanel("確定","取消","標簽,我們在面板1中");
panel2=new MyPanel("確定","取消","標簽,我們在面板2中");
Button=new JButton("我是不在面板中的按鈕");
add(panel1);add(panel2);add(Button);
setSize(300,200);
}
}

JScrollPane

當一個容器內放置了許多組件,而容器的顯示區域不足以同時顯示所有組件時,如果讓容器帶滾動條,通過移動滾動條的滑塊,容器中位置上的組件就能看到。滾動面板JScrollPane能實現這樣的要求,JScrollPane是帶有滾動條的面板。JScrollPane是Container類的子類,也是一種容器,但是只能添加一個組件。JScrollPane的一般用法是先將一些組件添加到一個JPanel中,然後再把這個JPanel添加到JScrollPane中。這樣,從界面上看,在滾動面板上,好像也有多個組件。在Swing中,像JTextArea、JList、JTable等組件都沒有自帶滾動條,都需要將它們放置於滾動面板,利用滾動面板的滾動條,瀏覽組件中的內容。

JScrollPane類的構造方法有:

  1. JScrollPane(),先創建JScrollPane對象,然後再用方法setViewportView(Component com)為滾動面板對象放置組件對象。
  2. JScrollPane(Component com),創建JScrollPane對象,參數com是要放置於JScrollPane對象的組件對象。為JScrollPane對象指定了顯示對象之後,再用add()方法將JScrollPane對象放置於窗口中。


JScrollPane對象設置滾動條的方法是:

  1. setHorizontalScrollBarPolicy(int policy),policy 取以下列3個值之一:
    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEED www.juhongyulept.com
    JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
  2. setVerticalScrollBarPolicy(int policy), policy 取以下列3個值之一:
    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEED
    JScrollPane.VERTICAL_SCROLLBAR_NEVER


以下代碼將文本區放置於滾動面板,滑動面板的滾動條能瀏覽文本區
JTextArea textA = new JTextArea(20,30);
JScrollPane jsp = new JScrollPane(TextA);
getContentPane().add(jsp);//將含文本區的滾動面板加入到當前窗口中。

十. 圖形界面(GUI)設計4.面板