普通面板,使用JPanel对象操作(JPanel
)
- 代码部分
package top.linksinke.jframe;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* JPanel练习<br />
* create by LINKSINKE on 2020/2/28
*/
public class JPanelTest extends JFrame {
public JPanelTest() {
// 默认打开的x、y坐标位置和打开之后的窗口大小
this.setBounds(30, 20, 500, 400);
// close按钮的操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 获取容器对象并设置布局方式为2行2列,行间距为20,列间距为10
Container ctainer = this.getContentPane();
ctainer.setLayout(new GridLayout(2, 2, 20, 10));
// 创建四个面板对象并设值布局方式
JPanel p1 = new JPanel(new GridLayout(2, 1, 10, 10));// 网格布局方式2行1列,行间距为10,列间距为10
JPanel p2 = new JPanel(new GridLayout(1, 2, 10, 10));// 网格布局方式1行2列,行间距为10,列间距为10
JPanel p3 = new JPanel(new BorderLayout());// 边界布局方式
JPanel p4 = new JPanel(new FlowLayout());// 流式布局方式
// 分别设置面板的边框,类型为带标题的边框
p1.setBorder(BorderFactory.createTitledBorder("面板1"));
p2.setBorder(BorderFactory.createTitledBorder("面板2"));
p3.setBorder(BorderFactory.createTitledBorder("面板3"));
p4.setBorder(BorderFactory.createTitledBorder("面板4"));
// 给面板1添加内容
p1.add(new Button("按钮a"));
p1.add(new Button("按钮b"));
p1.add(new Button("按钮c"));
p1.add(new Button("按钮d"));
p1.add(new Button("按钮e"));
// 给面板2添加内容
p2.add(new Button("按钮a"));
p2.add(new Button("按钮b"));
p2.add(new Button("按钮c"));
p2.add(new Button("按钮d"));
p2.add(new Button("按钮e"));
// 给面板3添加内容
p3.add(new Button("我在东边"), BorderLayout.EAST);
p3.add(new Button("我在西边"), BorderLayout.WEST);
p3.add(new Button("我在南边"), BorderLayout.SOUTH);
p3.add(new Button("我在北边"), BorderLayout.NORTH);
p3.add(new Button("我在中间"), BorderLayout.CENTER);
// 给面板4添加内容
p4.add(new Button("婴儿"));
p4.add(new Button("儿童"));
p4.add(new Button("少年"));
p4.add(new Button("青年"));
p4.add(new Button("壮年"));
p4.add(new Button("老年"));
p4.add(new Button("继续"));
p4.add(new Button("祈祷"));
p4.add(new Button("哈哈"));
// 向容器中加入面板p1,p2,p3,p4
ctainer.add(p1);
ctainer.add(p2);
ctainer.add(p3);
ctainer.add(p4);
// 设置frame是否显示,true:显示,false:不显示
this.setVisible(true);
}
public static void main(String args[]) {
// 对象初始化
JPanelTest jpt = new JPanelTest();
}
}
- 代码效果图
文本域(JTextArea
)
- 代码部分
package top.linksinke.test;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JTextArea;
/**
* JTextArea 文本域,可以支持多行文本的输入<br/>
* create by LINKSINKE on 2020/2/28
*/
public class JTextAreaTest extends JFrame {
public JTextAreaTest() {
// 设置窗口的默认x、y坐标位置和大小
this.setBounds(30, 30, 200, 300);
// 设置窗口close按钮的操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 获取容器对象并添加支持输入的文本域
Container ctainer = this.getContentPane();
// 设置容器的布局方式为流式布局
ctainer.setLayout(new FlowLayout());
// 创建jtextArea实例对象
JTextArea jtextArea = new JTextArea();
jtextArea.setColumns(10);// 设置列数
jtextArea.setRows(3); // 设置行数
// 往容器中添加jtextArea
ctainer.add(jtextArea);
// 设置窗口显示(true为显示,false为不显示)
this.setVisible(true);
}
public static void main(String args[]) {
JFrame jframe = new JTextAreaTest();
}
}
- 代码效果图
注:
可以发现上图中随着文本的不断输入,窗口里的文本内容会无法显示,必须要改变窗口的大小才可以把溢出来的文字给显示出来
带滚动条的面板(JScrollPane
)
- 代码部分
package top.linksinke.test;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
* JScrollPane 带滚条的面板<br />
* create by LINKSINKE on 2020/2/28
*/
public class JScroolPaneTest extends JFrame {
public JScroolPaneTest() {
// 设置窗口的默认位置和大小
this.setBounds(30, 30, 300, 300);
// 设置close按钮的操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 获取容器对象
Container ctainer = this.getContentPane();
// 创建文本域组件
JTextArea textArea = new JTextArea();
// 需要注意的是:当scrollPane在创建的时候就要给它添加一个文本域组件
JScrollPane scrollPane = new JScrollPane(textArea);
// 往容器ctainer对象中添加scrollPane滚动面板对象
ctainer.add(scrollPane);
// 设置窗口显示状态,可选true|fasle,true为显示窗口,false为不显示窗口
this.setVisible(true);
}
public static void main(String args[]) {
JFrame jframe = new JScroolPaneTest();
}
}
- 代码效果图
带选项卡的面板(JTabbedPane
)
- 代码部分
package top.linksinke.test;
import java.awt.Color;
import java.awt.Container;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* JTabbedPane 选项卡面板的使用<br/>
* create by LINKSINKE on 2020/3/3
*/
public class JTabbedPaneTest extends JFrame {
public JTabbedPaneTest() {
// 设置close关闭的操作(关闭窗口并停止程序)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口默认显示的位置和大小
this.setBounds(30, 30, 300, 300);
// 获取容器对象
Container ctainer = this.getContentPane();
// 创建三个面板
JPanel p1 = new JPanel();
p1.setBorder(BorderFactory.createLineBorder(Color.RED, 10));
JPanel p2 = new JPanel();
p2.setBorder(BorderFactory.createLineBorder(Color.YELLOW, 10));
JPanel p3 = new JPanel();
p3.setBorder(BorderFactory.createLineBorder(Color.BLUE, 10));
// 创建标签面板
JTabbedPane tabPane = new JTabbedPane();
// 添加标题为RED,内容为p1的面板
tabPane.addTab("RED", p1);
// 添加标题为YELLOW,内容为p2的面板
tabPane.addTab("YELLOW", p2);
// 添加标题为BLUE,内容为p3的面板
tabPane.addTab("BLUE", p3);
/**
* 设置选项卡显示的位置<br/>
* TOP JTabbedPane.TOP: 上方<br/>
* LEFT JTabbedPane.LEFT: 左方<br/>
* BOTTOM JTabbedPane.BOTTOM: 下方<br/>
* RIGHT JTabbedPane.RIGHT: 右方
*/
tabPane.setTabPlacement(JTabbedPane.LEFT);
/**
* 添加改变的监听事件
*/
tabPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JTabbedPane tb = (JTabbedPane) e.getSource();
/**
* 通过选项卡的索引获取对应的选项卡标题名称<br/>
* getTitleAt(int index)
*/
String str = String.format("你选择的是面板%d,名称为%s", tb.getSelectedIndex(),
tb.getTitleAt(tb.getSelectedIndex()));
JOptionPane.showMessageDialog(JTabbedPaneTest.this, str);
}
});
// 添加标签面板
ctainer.add(tabPane);
// 设置窗口是否显示
this.setVisible(true);
}
public static void main(String args[]) {
JFrame jframe = new JTabbedPaneTest();
}
}
- 代码效果图