分割面板&进度条&皮肤包

一、分割面板(JSplitPane)

1.概述    
    JSplitPane用于分隔两个(只能两个)组件,两个组件通过水平|垂直分隔条分别左右或上下显示,并且可以拖动分隔条调整两个组件显示区域的大小。

2.JSplitPane 常用构造方法
    JSplitPane()

    JSplitPane(int orientation)

    JSplitPane(int orientation, boolean continuousLayout)

    JSplitPane(int orientation, boolean continuousLayout, Component leftComponent, Component rightComponent)

    JSplitPane(int orientation, Component leftComponent, Component rightComponent)


    参数说明:
    orientation: 分隔的方向,取值 JSplitPane.HORIZONTAL_SPLIT(水平左右分隔)或 JSplitPane.VERTICAL_SPLIT(垂直上下分隔),默认水平左右分隔。

    continuousLayout: 拖动分隔条时,是否连续重绘组件,如果为flase,则拖动分隔条停止后才重绘组件。

    leftComponent: 左边/上面 显示的组件

    rightComponent: 右边/下面 显示的组件

3.JSplitPane 常用方法
设置分隔的方向,水平(左右) 或 垂直(上下) 分隔
void setOrientation(int orientation)

设置 左边/上面 显示的组件(下面两个方法完全一致)
void setLeftComponent(Component comp)
void setTopComponent(Component comp)

设置 左边/下面 显示的组件(下面两个方法完全一致)
void setRightComponent(Component comp)
void setBottomComponent(Component comp)

设置 拖动分隔条 时是否 连续重绘 组件
void setContinuousLayout(boolean continuousLayout)

分隔条上是否显示快速 折叠/展开 两边组件的小按钮
void setOneTouchExpandable(boolean newValue)

设置分隔条的大小(宽度)
void setDividerSize(int newSize)

设置分隔条的位置,相对于 左边/顶部 的像素长度
void setDividerLocation(int location)

设置分隔条的位置,相对于 宽度/高度 的比例 [0.0 ~ 1.0](该方法必须要先确保 JSplitPane 已经有宽高值,否则无效)
void setDividerLocation(double proportionalLocation)

----------------------------------------------------------------------------------------------------------
JProgressBar

1. 概述
官方JavaDocsApi: javax.swing.JProgressBar

JProgressBar,进度条。

以可视化形式显示某些任务进度的组件。

进度条中心可显示进度百分比的文本表示形式。

当一个任务的进度长度未知时,可将进度条设置为不确定模式。不确定模式的进度条持续地显示动画来表示正进行的操作。当可以确定任务长度和进度量时,则可设置进度条的最大最小值,以及更新进度条的进度值,将其切换回确定模式。

JProgressBar 常用构造方法:

/**
 * 构造方法中的参数含义:
 *     orient: 进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默认为水平方向
 *     min: 最小进度值
 *     max: 最大进度值
 */
JProgressBar()

JProgressBar(int orient)

JProgressBar(int min, int max)

JProgressBar(int orient, int min, int max)

JProgressBar 常用方法:

// 设置 最小进度值、最大进度值、当前进度值
void setMinimum(int min)
void setMaximum(int max)
void setValue(int n)

// 获取当前进度值
int getValue()

// 获取当前进度的百分比
double getPercentComplete()

// 是否绘制百分比文本(进度条中间显示的百分数)
void setStringPainted(boolean b)

// 设置进度条进度是否为不确定模式
void setIndeterminate(boolean newValue)

// 设置进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL
void setOrientation(int newOrientation)

// 添加进度条的进度改变监听器
void addChangeListener(ChangeListener l)

 

1.分割面板的使用

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

/**
 * 分割面板:
 * 		1. JSplitPane
 * 		2.将一个完成的窗体按照特定的规则进行分割成几个等分。
 * @author Zkingzz
 *
 */
public class JSplitPaneDemo extends JFrame{
	/**
	 * 1.创建分割面板
	 */
	private JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
	
	//2个填充的组件JPanel
	private JPanel jpa = new JPanel();
	private JPanel jpb = new JPanel();
	
	
	public JSplitPaneDemo() {
		this.setTitle("");
		this.setSize(500,400);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		
		//调节分割线的间距
		jsp.setDividerLocation(150);
		//调节分割线的粗细
		jsp.setDividerSize(10);
		//禁用拖动
		jsp.setEnabled(false);
	
		jpa.setBackground(Color.red);
		jpb.setBackground(Color.yellow);
		//分割面板分成2个部分  上部分 jpa   下部分 jpb
		jsp.setTopComponent(jpa);
		jsp.setBottomComponent(jpb);
		
		
		
		//JSplitPane是中间组件,直接可以加入窗体
		this.getContentPane().add(jsp);
		
		
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new JSplitPaneDemo();
	}

}

2.分割面板 多个面板


/**
 * 分割面板:
 * 		1. JSplitPane
 * 		2.将一个完成的窗体按照特定的规则进行分割成几个等分。
 * @author Zkingzz
 *
 */
public class JSplitPaneDemo2 extends JFrame{
	/**
	 * 1.创建分割面板
	 */
	private JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
	
	//2个填充的组件JPanel
	private JPanel jpa = new JPanel();
//	private JPanel jpb = new JPanel();
	
	
	private JSplitPane jsp2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
	private JPanel jpb = new JPanel();
	private JPanel jpc = new JPanel();
	
	
	public JSplitPaneDemo2() {
		this.setTitle("");
		this.setSize(500,400);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		
		
		jsp2.setDividerLocation(200);
		jsp2.setDividerSize(2);
		jsp2.setLeftComponent(jpb);
		jsp2.setRightComponent(jpc);
		
		
		
		
		
		//调节分割线的间距
		jsp.setDividerLocation(150);
		//调节分割线的粗细
		jsp.setDividerSize(10);
		//禁用拖动
		jsp.setEnabled(false);
	
		jpa.setBackground(Color.red);
		jpb.setBackground(Color.yellow);
		jpc.setBackground(Color.green);
		//分割面板分成2个部分  上部分 jpa   下部分 jpb
		jsp.setTopComponent(jpa);
		jsp.setBottomComponent(jsp2);
		
		
		
		//JSplitPane是中间组件,直接可以加入窗体
		this.getContentPane().add(jsp);
		
		
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new JSplitPaneDemo2();
	}

}

3.分割面板 与JPanel组件的刷新重新加载!!

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

public class Demo2 extends JFrame {

	private JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
	private JSplitPane jsp2 = new JSplitPane();

	private JPanel jpa = new JPanel();
	private JPanel jpb = new JPanel();
	private JPanel jpc = new JPanel();

	// 上容器组件
	private JLabel jla = new JLabel("康康足浴后台管理系统");

	// 下左容器
	private JButton jba = new JButton("康康服务");
	private JButton jbb = new JButton("客户管理");
	private JButton jbc = new JButton("套餐管理");
	private JButton jbd = new JButton("订单管理");
	private JButton jbe = new JButton("VIP服务");
	private JButton jbf = new JButton("退出系统");

	/**
	 * 后台首页默认显示下右容器内容
	 */
	public void kk() {
		jpc.removeAll();// 清空上一次的所有组件内容
		jpc.setBackground(Color.red);
		// 自定义添加组件
		JButton jbutton = new JButton("这是康康服务内容");
		jpc.add(jbutton);

		// 刷新
		jpc.repaint();
		// 重绘
		jpc.validate();
	}

	public void kh() {
		jpc.removeAll();// 清空上一次的所有组件内容
		jpc.setBackground(Color.yellow);
		// 自定义添加组件
		JButton jbutton = new JButton("这是客户管理的内容");
		jpc.add(jbutton);

		// 刷新
		jpc.repaint();
		// 重绘
		jpc.validate();
	}

	public Demo2() {
		this.setTitle("");
		this.setSize(700, 450);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		jla.setFont(new Font("华文新魏", Font.BOLD, 40));
		jpa.add(jla);

		jpb.add(jba);
		jpb.add(jbb);
		jpb.add(jbc);
		jpb.add(jbd);
		jpb.add(jbe);
		jpb.add(jbf);

		kk();

		// 康康服务按钮
		jba.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				kk();
			}
		});
		jbb.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				kh();
			}
		});

		jsp2.setDividerSize(2);
		jsp2.setDividerLocation(100);
		jsp2.setLeftComponent(jpb);
		jsp2.setRightComponent(jpc);

		jsp.setDividerSize(2);
		jsp.setDividerLocation(60);
		jsp.setTopComponent(jpa);
		jsp.setBottomComponent(jsp2);

		this.getContentPane().add(jsp);
		this.setVisible(true);

	}

	public static void main(String[] args) {
		new Demo2();
	}

}

4.进度条的使用

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JSplitPane;

/**
 * JProgressBar 进度条
 * 
 * @author Zkingzz
 *
 */
public class Demo3 extends JFrame {
	boolean flag = true;

	private JPanel jpa = new JPanel();
	private JProgressBar jpb = new JProgressBar();

	private JButton jba = new JButton("开始启动");
	private JButton jbb = new JButton("停止");

	public Demo3() {
		this.setTitle("");
		this.setSize(700, 450);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		// 设置进度条的宽度和高度
		jpb.setPreferredSize(new Dimension(600, 20));

		jpb.setValue(0);// 设置进度值
		jpb.setStringPainted(true);// 设置进度上的进度值
		jpb.setMinimum(0);// 设置最小的进度值
		jpb.setMaximum(100);// 设置最大的进度值
		// System.out.println("获取: "+jpb.getValue());//获取进度条加载到那个值了

		jpa.add(jpb);
		jpa.add(jba);
		jpa.add(jbb);

		this.getContentPane().add(jpa);
		
		
		//启动按钮
		jba.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				flag = true;
				//点一下加一下
//				jpb.setValue(jpb.getValue()+1);
				//利用多线程原理  相当于  请一个机器人帮我们做事
				new Thread() {
					public void run() {
						while(flag) {
							try {
								Thread.sleep(50);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
							jpb.setValue(jpb.getValue()+1);
							if(jpb.getValue() == 100) {
								JOptionPane.showMessageDialog(null, "下载成功");
								break;
							}
						}
					};
				}.start();
				
				
				
			}
		});
		
		
		jbb.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				flag = false;
			}
		});
		

		this.setVisible(true);

	}

	public static void main(String[] args) {
		new Demo3();
	}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值