JavaSwing | 面板

与JFrame不同,JPanel是一个可以包含其他组件的容器,同时也可以加入到其他容器中去。

java窗体和面板的继承树:

java swing 漂亮demo java swing jpanel_java

一、生成面板,并加入窗体中

一个窗体其实可以包容了很多很多面板。
将一个JPanel对象加入到窗体中,完全采用手动定位:

1、直接实例化一个JPanel对象

import javax.swing.*;
import java.awt.*;

public class SimpleFrame {
    public static void main(String[] args) {
        MyFrame frame = new MyFrame("MyFrame!!!!");  //new一个窗体对象
        frame.setLayout(null); //完全手工定位

        Panel panel = new Panel();
        panel.setSize(80,80);  //设置面板的大小
        panel.setBackground(Color.blue);  //设置面板背景颜色

        frame.add(panel); //将面板加入窗体
        panel.setLocation(10,10);  //设置面板位置

        frame.setVisible(true);  //显示窗体
    }
}

//自己写的窗体类,继承JFrame
class MyFrame extends JFrame {
    //构造函数
    public MyFrame(String title) {
        setTitle(title);
        setSize(300, 200);
        setBackground(Color.cyan);
    }
}

可见直接new了一个JPanel对象,然后对其设置后,使用add方法将其加入到JFrame窗体中,再定位显示位置。

2、实例化继承了JPanel的MyPanel对象

import javax.swing.*;
import java.awt.*;

public class SimpleFrame {
    public static void main(String[] args) {
        MyFrame frame = new MyFrame("MyFrame!!!!");  //new一个窗体对象
        MyPanel panel = new MyPanel();   //new一个面板对象

        frame.add(panel); //将面板加入窗体
        panel.setLocation(10,10);  //设置面板位置

        frame.setVisible(true);  //显示窗体
    }
}

//自己写的窗体类,继承JFrame
class MyFrame extends JFrame {
    //构造函数
    public MyFrame(String title) {
        setTitle(title);
        setLayout(null); //完全手工定位
        setSize(300, 200);
        setBackground(Color.cyan);
    }
}

class MyPanel extends JPanel {
    public MyPanel() {
        setSize(80,80);  //设置面板的大小
        setBackground(Color.blue);  //设置面板背景颜色
    }
}

自己写了一个MyPanel类,继承了JPanel。在类中可以丰富面板的内容,每次直接new一个MyPanel对象,再使用add方法将其加入窗体即可。

二、向JPanel中添加控件

1、使用JLable为面板添加图片