请大家看一下我的代码,我的功能是提示用户:请稍候......
主要的目的是希望"......"这省略号动起来,一个一个的动起来,下面是两个方法实现的,主要是想请教利用数组的方法,我用数组实现了功能,但是我在定义数组时是自己手动写死了代码,写死了几个"."的出现,我希望哪位前辈指教一下我如何动态定义这个数组,因为利用数组是我的弱项!谢谢
package org.qhit.syh.tb;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class ShenYueHao extends JFrame{
private JLabel jl=null;
private Container c;
private String str1="请稍候";
public ShenYueHao(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
jl = new JLabel(str1);
jl.setBounds(50,80,100,200);
c = new Container();
c = getContentPane();
this.c.add(jl);
//启动线程
new DianDian(this).start();
this.setBounds(0,0,800,600);
this.setVisible(true);
}
public JLabel getjl(){
return jl;
}
public static void main(String[] args){
new ShenYueHao();
}
}
class DianDian extends Thread{
ShenYueHao s;
String[] tempstr1={".","..","...","....",".....","......"};
String tempstr="请稍候";
public DianDian(ShenYueHao s){
this.s=s;
}
public void run(){
while(true){
//=====================以下是一个利用数组的方法
for(int i=0;i<tempstr1.length;i++){
s.getjl().setText(tempstr+tempstr1[i]);
System.out.println(s.getjl().getText());
try{
Thread.sleep(100);
} catch(InterruptedException e){
e.getStackTrace();
}
}
//===============================================
//=========================这是一个硬编码的方法,比较死板
// if(s.getjl().getText().equals("请稍候")){
// s.getjl().setText("请稍候"+".");
// }
// else if(s.getjl().getText().equals("请稍候.")){
// s.getjl().setText("请稍候..");
// }
// else if(s.getjl().getText().equals("请稍候..")){
// s.getjl().setText("请稍候...");
// }
// else if(s.getjl().getText().equals("请稍候...")){
// s.getjl().setText("请稍候");
// }
//==============================================
}
}
}
----------------解决方案--------------------------------------------------------
你可以定义一个int值表示长度,在长度到达之前一直递增,一直增到这个长度为止,然后又把它归为0,然后又每次加一个来附上那个点
明白?
----------------解决方案--------------------------------------------------------
* WaittingLabel.java
*
* Created on 2007年3月20日, 上午8:58
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package net.bccn.guibuilder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.Timer;
/**
*
* @author vlinux
*/
public class WaittingLabel extends JLabel implements ActionListener {
private int length = 0; //多少个省略号啊??
private int index = 0; //现在运行到多少个了啊???
private String labelText; //一开始要显示什么标签啊????
/**
* Creates a new instance of WaittingLabel
* labelText 是初始要显示的文字
* length 是省略号的长度
*/
public WaittingLabel(String labelText, int length) {
super(labelText);
this.labelText = labelText;
this.length = length;
index = 0;
new Timer(500, this).start();
}
/**
* 改变初始文字内容
*/
public void setText( String labelText ) {
this.labelText = labelText;
super.setText( labelText );
}
/**
* 按时更改文字
*/
public void actionPerformed(ActionEvent actionEvent) {
if( index++<length ){
super.setText( getText()+"." );
} else {
index = 0;
super.setText( labelText );
}
this.repaint();
}
}
----------------解决方案--------------------------------------------------------
楼上代码就是那个意思,简单明了
----------------解决方案--------------------------------------------------------
* WaittingLabel.java
*
* Created on 2007年3月20日, 上午8:58
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package net.bccn.guibuilder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.Timer;
/**
*
* @author vlinux
*/
public class WaittingLabel extends JLabel implements ActionListener {
private int length = 0; //多少个省略号啊??
private int index = 0; //现在运行到多少个了啊???
private String labelText; //一开始要显示什么标签啊????
/**
* Creates a new instance of WaittingLabel
* labelText 是初始要显示的文字
* length 是省略号的长度
*/
public WaittingLabel(String labelText, int length) {
super(labelText);
this.labelText = labelText;
this.length = length;
index = 0;
new Timer(500, this).start();
}
/**
* 改变初始文字内容
*/
public void setText( String labelText ) {
this.labelText = labelText;
super.setText( labelText );
}
/**
* 按时更改文字
*/
public void actionPerformed(ActionEvent actionEvent) {
if( index++<length ){
super.setText( getText()+"." );
} else {
index = 0;
super.setText( labelText );
}
this.repaint();
}
}
说实话,我一直没找到你调用的new timer()这个线程类
----------------解决方案--------------------------------------------------------
不好意思,没找到你代码里的new Timer()线程类
----------------解决方案--------------------------------------------------------
import javax.swing.Timer;
不是在这里么?
----------------解决方案--------------------------------------------------------
呵呵
----------------解决方案--------------------------------------------------------
没这样用过,你那个import是引包吧,咋的就搞到线程上去了哟?
----------------解决方案--------------------------------------------------------