JavaSwing | 面板
与JFrame不同,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为面板添加图片