1. 程式人生 > >Swing元件中面板(JPanel)的使用

Swing元件中面板(JPanel)的使用

JPanel元件定義面板實際上是一種容器元件,用來容納各種其他輕量級元件。此外,使用者還可以用這種面板容器繪製圖形。
JPanel的構造方法如下:
JPanel():建立具有雙緩衝和流佈局(FlowLayout)的面板。
JPanel(LayoutManager layout):建立具有制定佈局管理器的面板。
  JPanel的 常用方法:

void add(Component):新增元件。
void add(Component,int):新增元件至索引指定位置。
void add(Component,Object):按照指定佈局限制新增元件。
void add(Component,Object,int):按照指定佈局管理器限制新增元件到指定位置。
void remove(Component):移除元件。
void remove(int):移除指定位置的元件。
void removeAll():移除所有元件。
void paintComponent(Graphics):繪製元件。``
void repaint():重新繪製。
void setPreferredSize(Dimension):設定元件尺寸。
Dimension getPreferredSize():獲取最佳尺寸。

1 package com.sy.swing;
2
3 import java.awt.BorderLayout;
4 import java.awt.Color;
5 import java.awt.Container;
6 import java.awt.Dimension;
7 import java.awt.FlowLayout;
8 import java.awt.Graphics;
9
10 import javax.swing.JButton;
11 import javax.swing.JFrame;
12 import javax.swing.JPanel;
13
14 public class JPanelExample extends JFrame {
15 JButton[] buttons;
16 JPanel panel1;
17 CustomPanel panel2;
18
19 public JPanelExample(){
20 super(“面板例項”);
21 Container container = getContentPane();
22 container.setLayout(new BorderLayout());
23 panel1 = new JPanel(new FlowLayout()); //建立一個流佈局管理器的面板
24 buttons = new JButton[4];
25 for (int i = 0; i < buttons.length; i++) {
26 buttons[i]=new JButton(“按鈕”+(i+1));
27 panel1.add(buttons[i]); //新增按鈕到面板panel1中
28 }
29 panel2 = new CustomPanel();
30 container.add(panel1,BorderLayout.NORTH);
31 container.add(panel2,BorderLayout.CENTER);
32 pack();
33 setVisible(true);
34 }
35
36 public static void main(String[] args) {
37 JPanelExample jpe = new JPanelExample();
38 jpe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
39 }
40
41 class CustomPanel extends JPanel{ //定義內部類CustomPanel
42 @Override
43 protected void paintComponent(Graphics g) {
44 super.paintComponent(g);
45 g.drawString(“Welcome to Java Shape World”, 20, 20);
46 g.drawRect(20, 40, 130, 130);
47 g.setColor(Color.GREEN); //設定顏色為綠色
48 g.fillRect(20, 40, 130, 130); //繪製矩形
49 g.drawOval(160, 40, 100, 100); //繪製橢圓
50 g.setColor(Color.ORANGE); //設定顏色為橙色
51 g.fillOval(160, 40, 100, 100); //繪製橢圓
52 }
53 @Override
54 public Dimension getPreferredSize() {
55 // TODO Auto-generated method stub
56 return new Dimension(200,200);
57 }
58 }
59
60 }
執行結果如下:
在這裡插入圖片描述