当前位置: 代码迷 >> Java相关 >> 省略号特效--千里冰封速度进来指教,谢谢
  详细解决方案

省略号特效--千里冰封速度进来指教,谢谢

热度:184   发布时间:2007-03-20 01:10:12.0
省略号特效--千里冰封速度进来指教,谢谢

请大家看一下我的代码,我的功能是提示用户:请稍候......
主要的目的是希望"......"这省略号动起来,一个一个的动起来,下面是两个方法实现的,主要是想请教利用数组的方法,我用数组实现了功能,但是我在定义数组时是自己手动写死了代码,写死了几个"."的出现,我希望哪位前辈指教一下我如何动态定义这个数组,因为利用数组是我的弱项!谢谢

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,然后又每次加一个来附上那个点
明白?
----------------解决方案--------------------------------------------------------
回复:(千里冰封)你可以定义一个int值表示长度,在长...
/*
* 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();
}

}


----------------解决方案--------------------------------------------------------

楼上代码就是那个意思,简单明了


----------------解决方案--------------------------------------------------------
一头雾水
以下是引用神vLinux飘飘在2007-3-20 9:25:14的发言:
/*
* 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()这个线程类


----------------解决方案--------------------------------------------------------

回复:(神vLinux飘飘)回复:(千里冰封)你可以定义...

不好意思,没找到你代码里的new Timer()线程类


----------------解决方案--------------------------------------------------------
import javax.swing.Timer;
不是在这里么?

----------------解决方案--------------------------------------------------------
呵呵
----------------解决方案--------------------------------------------------------
没这样用过,你那个import是引包吧,咋的就搞到线程上去了哟?
----------------解决方案--------------------------------------------------------