我要从客户端传一个文件到服务器去计算,然后再把计算好的文件从服务器传回客户端(传输过程通过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);
我是这样设计的:当在客户端选择好要传输的文件后,调用负责传输的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);
解决方案 »
- java动态代理
- 练习题求指教
- 请各位棒棒忙看下了
- 一个赋值空间的问题(希望,各路高手云集,来解决下这个问题)分不多,但是礼轻情谊重。
- ◆发生了奇怪的问题∶怎么Tomcat自带的例子程序有的可以运行,有的却不能。(前天还都是好的)◆
- 哪里可以下载到JAVA 的集成开发环境软件啊
- 可以用一条sql语句一次性add多个约束吗?可以一次性删除多个约束吗?添加not null约束时候可以自定义命名吗?
- 能否给我也发一个java编写一个学籍管理系统
- 问题
- dos下运行java ex1时出现错误,急等
- 打JAR包后找不到第三方包,附上MAINEFEST.MF文件设置
- 关于使用logic:iterate 整合struts 和hiberante分页的问题
楼主【regxx】截止到2008-06-29 21:11:42的历史汇总数据(不包括此帖):
发帖数:4 发帖分:170
结贴数:3 结贴分:120
未结数:1 未结分:50
结贴率:75.00 % 结分率:70.59 %
楼主加油
GUI版里的我给你回了哈