代码如下:
package frames;import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Label;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JPanel;public class GameFrame extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L; static final Random random = new Random(); static final StringBuffer sb = new StringBuffer(""); static private int charCounter = 1; static JFrame frame = new JFrame();
static JPanel panel = new JPanel(); static String letters; static Label[] labels = new Label[11]; static Timer timer = new Timer(); public GameFrame() { frame.setBounds(200, 200, 600, 200);
frame.setLayout(new FlowLayout());
panel.setBackground(Color.YELLOW);
panel.setSize(200, 100);
timer.schedule(new TimerTask() { @Override
public void run() { panel.removeAll();
letters = makeLetter();
for (int i = 0; i < letters.length(); i++) {
labels[i] = new Label(letters.charAt(i) + "");
System.out.println(labels[i].getText()); panel.add(labels[i]);
}
}
}, 0, 3000); frame.getContentPane().add(panel); frame.setDefaultCloseOperation(3);
frame.setVisible(true); } public static String makeLetter() { sb.delete(0, sb.length()); for (int i = 0; i < charCounter; i++) { int ranNum = random.nextInt(26); char character = (char) (ranNum + 'A'); sb.append(character);
} charCounter++; return sb.toString(); }}
package frames;import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Label;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JPanel;public class GameFrame extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L; static final Random random = new Random(); static final StringBuffer sb = new StringBuffer(""); static private int charCounter = 1; static JFrame frame = new JFrame();
static JPanel panel = new JPanel(); static String letters; static Label[] labels = new Label[11]; static Timer timer = new Timer(); public GameFrame() { frame.setBounds(200, 200, 600, 200);
frame.setLayout(new FlowLayout());
panel.setBackground(Color.YELLOW);
panel.setSize(200, 100);
timer.schedule(new TimerTask() { @Override
public void run() { panel.removeAll();
letters = makeLetter();
for (int i = 0; i < letters.length(); i++) {
labels[i] = new Label(letters.charAt(i) + "");
System.out.println(labels[i].getText()); panel.add(labels[i]);
}
}
}, 0, 3000); frame.getContentPane().add(panel); frame.setDefaultCloseOperation(3);
frame.setVisible(true); } public static String makeLetter() { sb.delete(0, sb.length()); for (int i = 0; i < charCounter; i++) { int ranNum = random.nextInt(26); char character = (char) (ranNum + 'A'); sb.append(character);
} charCounter++; return sb.toString(); }}
解决方案 »
- 如何用JAVA Socket实现两台计算机通过一台服务器进行通信呢?我是初学者,想多看一下程序。求完整程序!
- java spring rmi
- 一个变态的java程序,输出结果是什么?
- 急,高分在线等:我想让这段代码多线程执行,怎么做?
- 看看吧 体现你实力
- java能实现全屏显示吗?
- JDK 1.5的安装问题
- 如何将文件名为aaa\abc\efg\aa.xls转换成aaa\\abc\\efg\\aa.xls
- Java heap maximum size参数
- 请问大家一个网络公司具体分那些部门,各个部门的职责是什么呀!如CEO,CTO,CIO还有其他,这些又是指那一类人呢,他们的工作范围又是那
- 类型安全:从 Object 强制类型转换为 List<Student> 实际上是对已擦除的类 型 List 进行检查
- 文本里包含编码信息吗
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Label;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JPanel;public class GameFrame extends JFrame {
private static final long serialVersionUID = 1L;
static final Random random = new Random();
static final StringBuffer sb = new StringBuffer("");
static private int charCounter = 1;
static JFrame frame = new JFrame();
static JPanel panel = new JPanel();
static String letters;
static Label[] labels = new Label[11];
static Timer timer = new Timer(); public GameFrame() {
frame.setBounds(200, 200, 600, 200);
frame.setLayout(new BorderLayout());
panel.setBackground(Color.YELLOW);
panel.setLayout(new FlowLayout());
timer.schedule(new TimerTask() {
@Override
public void run() {
panel.removeAll();
letters = makeLetter(); for (int i = 0; i < letters.length(); i++) {
labels[i] = new Label(letters.charAt(i) + "");
System.out.println(labels[i].getText());
panel.add(labels[i]);
}
panel.invalidate(); // 使而已重新生效
panel.validate();
}
}, 0, 1000); frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(3);
frame.setVisible(true);
} public static String makeLetter() {
sb.delete(0, sb.length());
for (int i = 0; i < charCounter; i++) {
int ranNum = random.nextInt(26);
char character = (char) (ranNum + 'A');
sb.append(character);
}
charCounter++;
return sb.toString();
}
public static void main(String[] args) {
new GameFrame();
}
}
import java.awt.FlowLayout;
import java.awt.Label;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JPanel;public class GameFrame extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L; static final Random random = new Random(); static final StringBuffer sb = new StringBuffer(""); static private int charCounter = 1; static JFrame frame = new JFrame();
static JPanel panel = new JPanel(); static String letters; static Label[] labels = new Label[11]; static Timer timer = new Timer(); public GameFrame() { frame.setBounds(200, 200, 600, 200);
frame.setLayout(new FlowLayout());
panel.setBackground(Color.YELLOW);
panel.setSize(600, 100);
timer.schedule(new TimerTask() { @Override
public void run() {
panel.removeAll();
letters = makeLetter();
for (int i = 0; i < letters.length(); i++) {
labels[i] = new Label(letters.charAt(i) + ""); panel.add(labels[i]); panel.updateUI();//重绘
// panel.invalidate();//2楼的方法,也能实现,但是效果不同,可能是因为布局原因
//
// panel.validate();
}
}
}, 0, 3000); frame.getContentPane().add(panel); frame.setDefaultCloseOperation(3);
frame.setVisible(true); } public static String makeLetter() { sb.delete(0, sb.length()); for (int i = 0; i < charCounter; i++) { int ranNum = random.nextInt(26); char character = (char) (ranNum + 'A'); sb.append(character);
} charCounter++; return sb.toString(); }}
panel.doLayout();package frames;import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JPanel;public class GameFrame extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L; static final Random random = new Random(); static final StringBuffer sb = new StringBuffer(""); static private int charCounter = 1; static JFrame frame = new JFrame(); static JPanel panel = new JPanel(); static String letters; static Label[] labels = new Label[11]; static Timer timer = new Timer(); public GameFrame() { frame.setBounds(200, 200, 600, 200); frame.setLayout(new FlowLayout()); panel.setBackground(Color.YELLOW); panel.setSize(200, 100); timer.schedule(new TimerTask() { @Override
public void run() { panel.removeAll();
letters = makeLetter(); for (int i = 0; i < letters.length(); i++) { labels[i] = new Label(letters.charAt(i) + ""); System.out.println(labels[i].getText()); panel.add(labels[i]); }
// 加doLayout()
panel.doLayout();
}
}, 0, 3000); frame.getContentPane().add(panel); frame.setDefaultCloseOperation(3); frame.setVisible(true); } public static String makeLetter() { sb.delete(0, sb.length()); for (int i = 0; i < charCounter; i++) { int ranNum = random.nextInt(26); char character = (char) (ranNum + 'A'); sb.append(character);
} charCounter++; return sb.toString(); }}
添加完控件之后,再加上
setVisible(false);
setVisible(true);
这两句,强制刷新一下就好了
System.out.println(labels[i].getText());
panel.add(labels[i]);
panel.updateUI();
每次添加后需刷新