优秀的手机游戏下载!
首页 java进度条怎么应用呢?怎样才能将进度条的进度与程序的进度联系起来?

java进度条怎么应用呢?怎样才能将进度条的进度与程序的进度联系起来?

发布时间:2026-02-08 16:55:47 编辑:手游哥 浏览:146

给你给程序你看看吧!一看就会懂得

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&lt=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&lt=number){

if(i&gt=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&gt1)

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\”)

// &lteditor-fold defaultstate=\”collapsed\” desc=\”Generated Code\”&gt

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()

}// &lt/editor-fold&gt

/**

* @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 &lt100) {

value++

jProgressBar1.setValue(value)

} else {

jProgressBar1.setValue(0)

}

}

}

终于看到个用netbeans的人了。。

java web 服务器端执行的进度条

你的 action 事件可以放在一个新线程中运行,不要阻挡 Swing 画图。

Swing 对事件的响应都是放在一个叫事件派发的线程中去做的,如果你的事件响应监听器本身在被事件派发线程调用时你做的事件太花时间了(比如我们来个无限循环啥的)我们就应该把这个 actionPerformed 方法中的事情放在一个新开的线程中去做:

public void actionPerformed(final ActionEvent e) {

java进度条怎么应用呢?怎样才能将进度条的进度与程序的进度联系起来?

new Thread() {

public void run() { // 你的事情都放在这里处理 }

}.start() // 开启一个新线程来处理,它将不再阻挡 Swing 事件派发线程去绘图。

}

开始页面:start.jsp

&lt%@ page contentType=\”text/htmlcharset=GBK\” %&gt

&lt% session.removeAttribute(\”task\”)%&gt

&ltjsp:useBean id=\”task\” scope=\”session\” /&gt

&lt% task.setRunning(true)%&gt

&lt% new Thread(task).start()%&gt

&ltjsp:forward page=\”status.jsp\”/&gt

状态页面:status.jsp

&lt%@ page contentType=\”text/htmlcharset=GBK\” %&gt

&ltjsp:useBean id=\”task\” scope=\”session\” /&gt

&ltHTML&gt

&ltHEAD&gt

&ltTITLE&gtJSP进度条&lt/TITLE&gt

&lt% if (task.isRunning()) { %&gt

&ltscript type=\”\” LANGUAGE=\”JavaScript\”&gt

setTimeout(\”location=\’status.jsp\’\”, 1000)

&lt/script&gt

&lt% } %&gt

&lt/HEAD&gt

&ltbODY bgcolor=\”\”&gt

&ltH1 ALIGN=\”CENTER\”&gtJSP进度条&lt/H1&gt

&ltH2 ALIGN=\”CENTER\”&gt

结果: &lt%= task.getResult() %&gt&ltBR&gt

&lt% int percent = task.getPercent()%&gt

&lt%= percent %&gt%

&lt/H2&gt

&ltTABLE WIDTH=\”60%\” ALIGN=\”CENTER\”

CELLPADDING=0 CELLSPACING=2&gt

&ltTR&gt

&lt% for (int i = 10i &lt= percenti += 10) { %&gt

&ltTD WIDTH=\”10%\” height=\”10\” BGCOLOR=\”red\”&gt&lt/TD&gt

&lt% } %&gt

&lt% for (int i = 100i &gtpercenti -= 10) { %&gt

&ltTD WIDTH=\”10%\”&gt&lt/TD&gt

&lt% } %&gt

&lt/TR&gt

&lt/TABLE&gt

&ltTABLE WIDTH=\”100%\” BORDER=0 CELLPADDING=0 CELLSPACING=0&gt

&ltTR&gt

&ltTD ALIGN=\”CENTER\”&gt

&lt% if (task.isRunning()) { %&gt

正在执行

&lt% } else { %&gt

&lt% if (task.isCompleted()) { %&gt

完成

&lt% } else if (!task.isStarted()) { %&gt

尚未开始

&lt% } else { %&gt

已停止

&lt% } %&gt

&lt% } %&gt

&lt/TD&gt

&lt/TR&gt

&ltTR&gt

&ltTD ALIGN=\”CENTER\”&gt

&ltBR&gt

&lt% if (task.isRunning()) { %&gt

&ltFORM METHOD=\”GET\” ACTION=\”stop.jsp\”&gt

&ltINPUT TYPE=\”SUBMIT\” =\”停止\”&gt

&lt/FORM&gt

&lt% } else { %&gt

&ltFORM METHOD=\”GET\” ACTION=\”start.jsp\”&gt

&ltINPUT TYPE=\”SUBMIT\” =\”开始\”&gt

&lt/FORM&gt

&lt% } %&gt

&lt/TD&gt

&lt/TR&gt

&lt/TABLE&gt

&lt/BODY&gt&lt/HTML&gt

停止页面:stop.jsp

&lt%@ page contentType=\”text/htmlcharset=GBK\” %&gt

&ltjsp:useBean id=\”task\” scope=\”session\” /&gt

&lt% task.setRunning(false)%&gt

&ltjsp:forward page=\”status.jsp\”/&gt

业务逻辑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() &amp&amp!isCompleted()) {

work()

}

}

finally {

setRunning(false)

}

}

}

以上就是关于java进度条怎么应用呢?怎样才能将进度条的进度与程序的进度联系起来?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

给你给程序你看看吧!一看就会懂得import javax.swing.*import java.awt.*import javax.swing.border.*…
查看详情
给你给程序你看看吧!一看就会懂得import javax.swing.*import java.awt.*import javax.swing.border.*…
查看详情
给你给程序你看看吧!一看就会懂得import javax.swing.*import java.awt.*import javax.swing.border.*…
查看详情
相关资讯
猜你喜欢