package ui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JSplitPane;
/**
* 分割面板 and 进度条
* @author d
*
*/
public class TestJSplitPane extends JFrame {
//实例化一个分割面板对象
// JSplitPane jsp = new JSplitPane();//默认无参的构造函数为 水平左右
//上下
JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);//设置分割面板为 垂直
//下面的分割面板:左右
JSplitPane jsp2 = new JSplitPane();
//实例化两个画布
JPanel jptop = new JPanel();
JPanel jpleft = new JPanel();
JPanel jpright = new JPanel();
/进度条
JProgressBar jpb = new JProgressBar();
//按钮
JButton jbstart = new JButton("开始下载");
JButton jbend = new JButton("暂停下载");
//用来控制进度条
boolean b = true;
public TestJSplitPane() {
this.setTitle("分割面板and进度条");
this.setSize(500, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
//把画布放到分割面板中
jsp.setLeftComponent(jptop);
jsp.setRightComponent(jsp2);
//下面的分割面板——左右
jsp2.setLeftComponent(jpleft);
jsp2.setRightComponent(jpright);
//设置分割面板左侧的宽度
jsp.setDividerLocation(100);
jsp2.setDividerLocation(100);
//设置分割线的宽度
jsp.setDividerSize(5);
jsp2.setDividerSize(5);
//问:怎么设置分割线不可拖动
//把进度条放到上面的画布
jptop.add(jpb);
//设置进度条进度
jpb.setValue(0);
//设置进度条显示百分比
jpb.setStringPainted(true);
//把按钮添加到右侧的画布
jpright.add(jbstart);
jpright.add(jbend);
//给开始下载按钮添加事件-匿名内部类
jbstart.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
b = true;
// System.out.println(v);
new Thread() {//实例化线程对象
//获取进度条的值
int v = jpb.getValue();
public void run() {//重写run方法
while(b) {
v++;
if(v>100) {
break;
}
// if(v==99) {
// JOptionPane.showMessageDialog(null, "想下载成功吗?请开通智障版会员");
// }
jpb.setValue(v);
try {
//设置休眠时间
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
}.start();//启动线程
}
});
//给暂停按钮添加事件
jbend.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
b = false;
}
});
this.getContentPane().add(jsp);//把分割面板放到窗体中
this.setVisible(true);
}
public static void main(String[] args) {
new TestJSplitPane();
}
}
分割面板:JSplitPane
进度条:JProgressBar
运用了线程。