面板组件
面板组件不能单独存在,只能放置在顶级窗口容器中。常见的面板组件有两个,分别是JPanel和JScrollPane。
JPanel
1、JPanel面板组件是一个无边框,不能被移动、不能放大,缩小、不能关闭的面板,它的默认布局管理器是FlowLayout。
2、构造方法:JPanel(LayoutManager layout)设置JPanel布局管理器。
例:
package com.company.www;
import javax.swing.*;
import java.awt.*;
public class Frame {
public static void GUI() {
JFrame frame = new JFrame("FRAME");
frame.setSize(1000, 800);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(2, 2, 10, 10));
JButton btn1 = new JButton("1");
JButton btn2 = new JButton("2");
JButton btn3 = new JButton("3");
JButton btn4 = new JButton("4");
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
panel.add(btn4);
frame.add(panel);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(Frame::GUI);
}
}
JScrollPane
1、JScrollPane是一个带有滚动条的面板,面板上只能添加一个组件。(如果想向JScrollPane面板中添加多个组件,应该先把多个组件添加到某个组件中,然后再将这个组件添加到JScrollPane中)。
2、构造方法:
JScrollPane() 创建一个空的JScrollPane面板
JScrollPane(Component view) 创建一个显示指定组件的JScrollPane面板,如果组件的内容超过视图大小就会显示水平或垂直滚动条。
JScrollPane(Component view, int vsbPolicy, int hsbPolicy) 创建一个显示指定容器、有指定滚动条策略的滚动面板。
3、属性
-
VERTICAL_SCROLLBAR_AS_NEEDED HORIZONTAL_SCROLLBAR_AS_NEEDED
当填充的组件视图超过窗口大小的时候,自动显示水平和竖直滚动条(JscrollPane组件的默认值)
-
VERTICAL_SCROLLBAR_ALWAYS HORIZONTAL_SCROLLBAR_ALWAYS
无论填充的组件视图大小,始终显示水平和竖直滚动条。
-
VERTICAL_SCROLLBAR_NEVER HORIZONTAL_SCROLLBAR_NEVER
无论填充的组件视图大小,始终不显示水平和竖直滚动条。
4、成员方法:
void setHorizontalBarPolicy(int policy) 指定水平滚动条何时显示在滚动面板上。
void setVerticalBarPolicy(int policy) 指定垂直滚动条何时显示在滚动面板上。
void setViewportView(Component view) 设置在滚动面板显示的组件。
例:
package com.company.www;
import javax.swing.*;
import java.awt.*;
public class Frame {
public static void GUI() {
JFrame frame = new JFrame("FRAME");
frame.setSize(500, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane jsp = new JScrollPane();
// 设置垂直滚动条策略--滚动条需要时显示
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
// 设置水平滚动条策略--滚动条需要时显示
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
JPanel panel = new JPanel();
panel.add(new JButton("1"));
panel.add(new JButton("2"));
panel.add(new JButton("3"));
panel.add(new JButton("4"));
// 设置JPanel面板在滚动面板JScrollPane中显示
jsp.setViewportView(panel);
// 向JFrame容器窗口中添加JScrollPane滚动面板组件
frame.add(jsp, BorderLayout.CENTER);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(Frame::GUI);
}
}