Java里Swing的面板练习代码(2)

普通面板,使用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();
	}
}
  • 代码效果图
    在这里插入图片描述
发布了68 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_29001539/article/details/104550696