1. 程式人生 > >java入門教程-10.4Java面板基礎:JPanel和JScrollPane

java入門教程-10.4Java面板基礎:JPanel和JScrollPane

面板有兩種,一種是普通面板(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
        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);//將含文字區的滾動面板加入到當前視窗中。