我要从客户端传一个文件到服务器去计算,然后再把计算好的文件从服务器传回客户端(传输过程通过socket实现)。这个过程需要点时间,所以想做个进度条。
我是这样设计的:当在客户端选择好要传输的文件后,调用负责传输的socket类,然后再写一个frame类(内容在下面)来实现进度条的功能,类名是 Csocket。在socket类中调用Csocket类.
问题是当传输时显示不出frame里的jlabel和JProgressBar组件,只显示一个空白的frame,但是计算完后可以显示出来,并会显示进度条的值是100/100,而且单独运行Csocket类时可以显示出
请问高手是怎么一回事?(执行步骤的截图在附件,分别命名为1、2、3、4)
Csocket类如下:
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JProgressBar;public class Csocket extends javax.swing.JFrame { 
    public JProgressBar jProgressBar=new JProgressBar();   
    /** Creates new form Csocket */
    public Csocket() { 
        int height,width;
        Dimension dd;
        dd=Toolkit.getDefaultToolkit().getScreenSize();
        initComponents();
        height=this.getHeight();
        width=this.getWidth();
        System.out.println(dd.height+"  "+ dd.width+"  "+height+"  "+width);
        height=(dd.height-height)/2;
        width=(dd.width-width)/2;
       
        this.setLocation(width, height);   
        jProgressBar.setSize(250,25); 
        jProgressBar.setLocation(25, 70);
        jProgressBar.setVisible(true);
        this.add(jProgressBar); 
    }
    private void initComponents() {        jLabel1 = new javax.swing.JLabel();        setTitle("Data is sending, please wait..");        jLabel1.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N
        jLabel1.setText("Data is sending, please wait...");        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(56, 56, 56)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 239, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(36, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(52, Short.MAX_VALUE))
        );        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 Csocket().add(jProgressBar);
                new Csocket().setVisible(true); 
            }
        });
    }   
   
    private javax.swing.JLabel jLabel1; 
}
调用部分这样写的:
Csocket pBar = new Csocket();
pBar.setVisible(true);
pBar.jProgressBar.setValue(20);   

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【regxx】截止到2008-06-29 21:11:42的历史汇总数据(不包括此帖):
    发帖数:4                  发帖分:170                
    结贴数:3                  结贴分:120                
    未结数:1                  未结分:50                 
    结贴率:75.00 %            结分率:70.59 %            
    楼主加油
      

  2.   

    呵呵,这伙计看来是急了,到处发
    GUI版里的我给你回了哈