给你给程序你看看吧!一看就会懂得
import javax.swing.*
import java.awt.*
import javax.swing.border.*
public class Example10_17{
public static void main(String args[]){
new BarWin()
}
}
class BarWin extends JFrame implements Runnable{
JProgressBar pbar1,pbar2
Thread thread1,thread2
JTextField text1,text2
int number=50
BarWin(){
pbar1=new JProgressBar(0,number)
pbar2=new JProgressBar(0,number)
pbar1.setStringPainted(true)
pbar2.setStringPainted(true)
text1=new JTextField(10)
text2=new JTextField(10)
thread1=new Thread(this)
thread2=new Thread(this)
Box boxV1=Box.createVerticalBox()
boxV1.add(pbar1)
boxV1.add(pbar2)
Box boxV2=Box.createVerticalBox()
boxV2.add(text1)
boxV2.add(text2)
Box baseBox=Box.createHorizontalBox()
baseBox.add(boxV1)
baseBox.add(boxV2)
setLayout(new FlowLayout())
add(baseBox)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
setBounds(10,10,300,300)
setVisible(true)
thread1.start()
thread2.start()
}
public void run(){
if(Thread.currentThread()==thread1){
for(int i=1i<=numberi++){
text1.setText(”第”+i+”项=”+f(i))
pbar1.setValue(i)
try{ Thread.sleep(500)
}
catch(InterruptedException e){}
}
}
if(Thread.currentThread()==thread2){
long a1=1,a2=1,a=a1
int i=1
while(i<=number){
if(i>=3){
a=a1+a2
a1=a2
a2=a
}
text2.setText(”第”+i+”项=”+a)
pbar2.setValue(i)
i++
try{ Thread.sleep(500)
}
catch(InterruptedException e){}
}
}
}
long f(int n){
long c=0
if(n==1||n==2)
c=1
else if(n>1)
c=f(n-1)+f(n-2)
return c
}
}
java中swing界面中主程序运行时进度条不显示,程序结束后才显示;注释掉主程序后,再运行,进度条正常显示
public class NewJFrame extends javax.swing.JFrame implements ActionListener, ChangeListener {
public NewJFrame() {
initComponents()
Timer timer = new Timer(50, this)
timer.setRepeats(true)
timer.start()
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings(”unchecked”)
// <editor-fold defaultstate=”collapsed” desc=”Generated Code”>
private void initComponents() {
jPanel1 = new javax.swing.JPanel()
jProgressBar1 = new javax.swing.JProgressBar()
jLabel1 = new javax.swing.JLabel()
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE)
setAlwaysOnTop(true)
getContentPane().setLayout(new java.awt.CardLayout())
jPanel1.setPreferredSize(new java.awt.Dimension(600, 350))
jPanel1.setVerifyInputWhenFocusTarget(false)
jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout())
jPanel1.add(jProgressBar1, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 294, 270, 10))
//jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource(”/splashTimer.jpg”)))// NOI18N
jLabel1.setMaximumSize(new java.awt.Dimension(600, 350))
jLabel1.setMinimumSize(new java.awt.Dimension(600, 350))
jLabel1.setPreferredSize(new java.awt.Dimension(600, 350))
jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1))
getContentPane().add(jPanel1, ”card2”)
pack()
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true)
}
})
}
// Variables declaration – do not modify
private javax.swing.JLabel jLabel1
private javax.swing.JPanel jPanel1
private javax.swing.JProgressBar jProgressBar1
// End of variables declaration
public void stateChanged(ChangeEvent e1) {
int value = jProgressBar1.getValue()
if (e1.getSource() == jProgressBar1) {
}
}
public void actionPerformed(ActionEvent e) {
int value = jProgressBar1.getValue()
if (value <100) {
value++
jProgressBar1.setValue(value)
} else {
jProgressBar1.setValue(0)
}
}
}
终于看到个用netbeans的人了。。
java web 服务器端执行的进度条
你的 action 事件可以放在一个新线程中运行,不要阻挡 Swing 画图。
Swing 对事件的响应都是放在一个叫事件派发的线程中去做的,如果你的事件响应监听器本身在被事件派发线程调用时你做的事件太花时间了(比如我们来个无限循环啥的)我们就应该把这个 actionPerformed 方法中的事情放在一个新开的线程中去做:
public void actionPerformed(final ActionEvent e) {

new Thread() {
public void run() { // 你的事情都放在这里处理 }
}.start() // 开启一个新线程来处理,它将不再阻挡 Swing 事件派发线程去绘图。
}
开始页面:start.jsp
<%@ page contentType=”text/htmlcharset=GBK” %>
<% session.removeAttribute(”task”)%>
<jsp:useBean id=”task” scope=”session” />
<% task.setRunning(true)%>
<% new Thread(task).start()%>
<jsp:forward page=”status.jsp”/>
状态页面:status.jsp
<%@ page contentType=”text/htmlcharset=GBK” %>
<jsp:useBean id=”task” scope=”session” />
<HTML>
<HEAD>
<TITLE>JSP进度条</TITLE>
<% if (task.isRunning()) { %>
<script type=”” LANGUAGE=”JavaScript”>
setTimeout(”location=’status.jsp’”, 1000)
</script>
<% } %>
</HEAD>
<bODY bgcolor=””>
<H1 ALIGN=”CENTER”>JSP进度条</H1>
<H2 ALIGN=”CENTER”>
结果: <%= task.getResult() %><BR>
<% int percent = task.getPercent()%>
<%= percent %>%
</H2>
<TABLE WIDTH=”60%” ALIGN=”CENTER”
CELLPADDING=0 CELLSPACING=2>
<TR>
<% for (int i = 10i <= percenti += 10) { %>
<TD WIDTH=”10%” height=”10” BGCOLOR=”red”></TD>
<% } %>
<% for (int i = 100i >percenti -= 10) { %>
<TD WIDTH=”10%”></TD>
<% } %>
</TR>
</TABLE>
<TABLE WIDTH=”100%” BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR>
<TD ALIGN=”CENTER”>
<% if (task.isRunning()) { %>
正在执行
<% } else { %>
<% if (task.isCompleted()) { %>
完成
<% } else if (!task.isStarted()) { %>
尚未开始
<% } else { %>
已停止
<% } %>
<% } %>
</TD>
</TR>
<TR>
<TD ALIGN=”CENTER”>
<BR>
<% if (task.isRunning()) { %>
<FORM METHOD=”GET” ACTION=”stop.jsp”>
<INPUT TYPE=”SUBMIT” =”停止”>
</FORM>
<% } else { %>
<FORM METHOD=”GET” ACTION=”start.jsp”>
<INPUT TYPE=”SUBMIT” =”开始”>
</FORM>
<% } %>
</TD>
</TR>
</TABLE>
</BODY></HTML>
停止页面:stop.jsp
<%@ page contentType=”text/htmlcharset=GBK” %>
<jsp:useBean id=”task” scope=”session” />
<% task.setRunning(false)%>
<jsp:forward page=”status.jsp”/>
业务逻辑bean:TaskBean.java
package progress
import java.io.Serializable
public class TaskBean
implements Runnable, Serializable {
private int counter
private int sum
private boolean started
private boolean running
private int sleep
public TaskBean() {
counter = 0
sum = 0
started = false
running = false
sleep = 100
}
protected void work() {
try {
Thread.sleep(sleep)
counter++
sum += counter
}
catch (InterruptedException e) {
setRunning(false)
}
}
public synchronized int getPercent() {
return counter
}
public synchronized boolean isStarted() {
return started
}
public synchronized boolean isCompleted() {
return counter == 100
}
public synchronized boolean isRunning() {
return running
}
public synchronized void setRunning(boolean running) {
this.running = running
if (running) {
started = true
}
}
public synchronized Object getResult() {
if (isCompleted()) {
return new Integer(sum)
}
else {
return null
}
}
public void run() {
try {
setRunning(true)
while (isRunning() &&!isCompleted()) {
work()
}
}
finally {
setRunning(false)
}
}
}
以上就是关于java进度条怎么应用呢?怎样才能将进度条的进度与程序的进度联系起来?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
