Swing是开发Java桌面应用程序GUI的JDK。
本文就分享一个实现进度条的示例
前期准备工作(包括相关工具或所使用的原料等)IntelliJ IDEAjavaSwing 详细的操作方法或具体步骤
先来段代码:
package chapter4;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.TimeUnit;
/**
* Created by MyWorld on 2016/3/24.
*/
public class SwingJProgressBarDemo {
public static void main(String[] args) {
JFrame frame=new JFrame("JProgressBarDemo");
frame.setSize(400, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
final JProgressBar progressBar=new JProgressBar();
progressBar.setOrientation(JProgressBar.HORIZONTAL);
progressBar.setSize(200, 100);
progressBar.setMinimum(0);
progressBar.setMaximum(100);
frame.add(progressBar);
JButton btn=new JButton("Start ProgressBar");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i <=10; i++) {
progressBar.setValue(i * 10);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}).start();
}
}); frame.add(btn);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}}

执行下上面的代码,看看效果


功能是有,但是有一点不好
进度条上显示百分比
更改下代码
Code:
progressBar.setStringPainted(true);

执行一下看看效果
进度条上已经有进度信息了
OK


功能是实现了,就是感觉有点土啊
使用Substance更改下皮肤
更改后的代码:
package chapter4;import org.jvnet.substance.skin.SubstanceAutumnLookAndFeel;
import javax.swing.*;
import javax.swing.plaf.metal.MetalProgressBarUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.TimeUnit;
/**
* Created by MyWorld on 2016/3/24.
*/
public class SwingJProgressBarDemo {
public static void main(String[] args) throws UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(new SubstanceAutumnLookAndFeel());
// JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame frame=new JFrame("JProgressBarDemo");
frame.setSize(400, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
final JProgressBar progressBar=new JProgressBar();
progressBar.setOrientation(JProgressBar.HORIZONTAL);
progressBar.setSize(200, 100);
progressBar.setMinimum(0);
progressBar.setMaximum(100);
progressBar.setBorderPainted(true);
progressBar.setUI(new MetalProgressBarUI());
progressBar.setBackground(Color.green);
progressBar.setForeground(Color.BLUE);
progressBar.setStringPainted(true);
frame.add(progressBar);
JButton btn=new JButton("Start ProgressBar");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Thread((new Runnable() {
@Override
public void run() {
for (int i=0; i <=10; i++) {
final int finalI=i;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
progressBar.setValue(finalI * 10);
}
});
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
})).start();
}
}); frame.add(btn);
frame.setVisible(true);
}
});
}
}


执行下看看效果
很OK
O了


- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
