怎么在一个JPanel中加入一个进度条,显示进程执行状况 我的需求是JPanel中有个按钮,点击按钮触发事件,要执行一段处理。由于处理时间长,我想加入一个进度条,点击按钮后显示进度条,同时事件处理执行,执行完毕,进度条消失,请问要怎么做呢?可以实现么?用哪些类? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这不难实现,可以把进度条的显示作为一个单独的线程,单击按钮后,创建并执行该线程!举一个例子:实现一个文件复制操作,单击"复制"按钮,用进度条显示进度.步骤如下:1,定义一个FileCopy类,该类继承JFrame2,定义一个ProgressBar类,该类继承Thread,并且该类最好要作为FileCopy类的内部类定义,因为内部类可以访问外部类的成员3,在FileCopy类的"复制"按钮的单击事件中,除了执行文件复制动作外,还要加上一句代码:new ProgressBar().start(); 我是在定义了个Process类,继承了Thread,里面有run(),然后在Panel中的按钮事件中new Process().start()可还是进度条总是等处理程序完毕后才出现 代码怎么写的?是不是把复制处理那句写在new Process().start() 前面了? 事件actionPerformed(ActionEvent e)的第一句就是new Process().start() ; 下面是我测试用的两个类,各位帮忙看看,怎么老是输出完毕才显示进程状态?非常感谢import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Test extends JFrame implements ActionListener{ static JLabel infor; JButton ok; Test() { infor=new JLabel(""); ok=new JButton("ok"); ok.addActionListener(this); Container con=getContentPane(); con.add(infor,BorderLayout.CENTER); con.add(ok,BorderLayout.SOUTH); setBounds(100,100,100,100); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); setVisible(true); validate(); } public void actionPerformed(ActionEvent e) { Progress Test=new Progress("程式執行中"); Test.start(); for (int i=0;i<1000 ;i++ ) { int j=i; System.out.println(j); } } public static void main(String args[]) { new Test(); }} Process.javaimport java.io.*;import java.lang.*; class Progress extends Thread{ static boolean iterateFlag ; private String beforeString; private String endString; public String info,append; public Progress(String content){ iterateFlag=true; setBeforeString(content); } public Progress(){ iterateFlag=true; } public void setIterateFlag(boolean iterateFlag){ this.iterateFlag=iterateFlag; } public boolean isStop(){ return this.iterateFlag; } public void setBeforeString(String content){ this.beforeString=content + "|"; } public String getBeforeString(){ return beforeString; } public void setEndString(String endstring){ this.endString=endString; } public void run(){ try{ info=getBeforeString(); Test.infor.setText(info); while(isStop()) { int i; for(i=1;i<=4;i++){ switch(i){ case 1: append="."; Test.infor.setText(info+append); Thread.currentThread().sleep(100); break; case 2: append="..."; Test.infor.setText(info+append); Thread.currentThread().sleep(100); break; case 3: append="....."; Test.infor.setText(info+append); Thread.currentThread().sleep(100); break; case 4: append="......."; Test.infor.setText(info+append); Thread.currentThread().sleep(100); break; } } } }catch(Exception ex){ ex.printStackTrace(); }} 求助啊,十万火急的面试题,关于FOR循环,高手帮帮忙,谢谢 麻烦帮忙解决一下文件路径的问题 简单的字符数组问题,请大虾指教~~在线急等 怎么隐藏java程序的界面? 请教import语句的详细解释! 求助:在一个有几千行的文本文件里边提取数据,并统计! 各位大虾:有没有什么办法来动态替换jre/lib下的.jar呢? 关于JLabel中图标的问题 在局域网中连接数据库时只要把localhost改成数据库服务器的相应IP就可以了吗? 我给分 java中的多态性 是怎么体现的呢? 分析Java关键字:this与super的应用
1,定义一个FileCopy类,该类继承JFrame
2,定义一个ProgressBar类,该类继承Thread,并且该类最好要作为FileCopy类的内部类定义,因为内部类可以访问外部类的成员
3,在FileCopy类的"复制"按钮的单击事件中,除了执行文件复制动作外,还要加上一句代码:new ProgressBar().start();
可还是
进度条总是等处理程序完毕后才出现
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame implements ActionListener
{
static JLabel infor;
JButton ok;
Test()
{
infor=new JLabel("");
ok=new JButton("ok");
ok.addActionListener(this);
Container con=getContentPane();
con.add(infor,BorderLayout.CENTER);
con.add(ok,BorderLayout.SOUTH);
setBounds(100,100,100,100);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e)
{
Progress Test=new Progress("程式執行中");
Test.start();
for (int i=0;i<1000 ;i++ )
{
int j=i;
System.out.println(j);
}
}
public static void main(String args[])
{
new Test();
}}
Process.java
import java.io.*;
import java.lang.*;
class Progress extends Thread{
static boolean iterateFlag ;
private String beforeString;
private String endString;
public String info,append;
public Progress(String content){
iterateFlag=true;
setBeforeString(content);
}
public Progress(){
iterateFlag=true;
}
public void setIterateFlag(boolean iterateFlag){
this.iterateFlag=iterateFlag;
}
public boolean isStop(){
return this.iterateFlag;
}
public void setBeforeString(String content){
this.beforeString=content + "|";
}
public String getBeforeString(){
return beforeString;
}
public void setEndString(String endstring){
this.endString=endString;
}
public void run(){
try{
info=getBeforeString();
Test.infor.setText(info);
while(isStop())
{
int i;
for(i=1;i<=4;i++){
switch(i){
case 1:
append=".";
Test.infor.setText(info+append);
Thread.currentThread().sleep(100);
break;
case 2:
append="...";
Test.infor.setText(info+append);
Thread.currentThread().sleep(100);
break;
case 3:
append=".....";
Test.infor.setText(info+append);
Thread.currentThread().sleep(100);
break;
case 4:
append=".......";
Test.infor.setText(info+append);
Thread.currentThread().sleep(100);
break;
}
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}