本意是 按start按钮 开始弹出一个窗口内带一gif图片 一边打印 同时图片能动 打印完 窗口消失但是 ,现在只能看到弹出窗体 但不显示任何东西????
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Test123 {
public static void main(String[] args) {
JFrame f = new JFrame();
JButton b = new JButton("Start");
b.addActionListener(new moto());
f.setBounds(400, 400, 300, 300);
f.add(b);
f.setVisible(true);
}
}class moto implements ActionListener { public void actionPerformed(ActionEvent arg0) {
JFrame d = new JFrame();
d.setBounds(200, 400, 200, 200);
d.add(new JLabel(new ImageIcon(".\\image\\ding.gif")));
d.setVisible(true);
for (int i=0; i<10;i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(""+i);
}
d.setVisible(false);
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Test123 {
public static void main(String[] args) {
JFrame f = new JFrame();
JButton b = new JButton("Start");
b.addActionListener(new moto());
f.setBounds(400, 400, 300, 300);
f.add(b);
f.setVisible(true);
}
}class moto implements ActionListener { public void actionPerformed(ActionEvent arg0) {
JFrame d = new JFrame();
d.setBounds(200, 400, 200, 200);
d.add(new JLabel(new ImageIcon(".\\image\\ding.gif")));
d.setVisible(true);
for (int i=0; i<10;i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(""+i);
}
d.setVisible(false);
}
}
解决方案 »
- 关于JAVA网络编程,刚刚开始学这个,求指教!
- Struts2下的Ajax异步验证问题
- C++的多线程机制与JAVA有区别吗?
- Applet小程序中的一个最基本的问题!!!!!!!!!!!!!!!!
- 急 请教 高手一个问题(SWT DragSource And DropTarget)
- java程序怎么区分并获取虚拟机和本机的ip
- 请问在WIN2003下如何安装、配置JAVA环境?
- JAVA的类的方法,任何一个对象都可以对其进行修改?
- 来探讨一下线程问题
- 如何解决JPasswordField和JTextField中的输入法问题
- 关于System.arraycopy效率的质疑,欢迎大家进来讨论
- 二维数组中找 那个元素为0 的问题
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}去掉就可以达到你想要的效果了!
当Thread sleep的时候,阻塞了图片的加载...
B线程(B开启显示窗口)[B线程可以堵塞A的]
C后台操作线程整理好这3个调用的先后 关系 就OK了
去掉后还是不行 他要等for循环完了 才能出现 gif图片
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Test123 {
public static void main(String[] args) {
JFrame f = new JFrame();
JButton b = new JButton("Start");
b.addActionListener(new moto());
f.setBounds(400, 400, 300, 300);
f.add(b);
f.setVisible(true);
}
}class moto implements ActionListener { public void actionPerformed(ActionEvent arg0) {
JFrame d = new JFrame();
d.setBounds(200, 400, 200, 200);
d.add(new JLabel(new ImageIcon(".\\image\\ding.gif")));
d.setVisible(true);
for (int i=0; i<1000000;i++) {
System.out.println(""+i);
}
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Test123 {
public static void main(String[] args) {
JFrame f = new JFrame();
JButton b = new JButton("Start");
b.addActionListener(new moto());
f.setBounds(400, 400, 300, 300);
f.add(b);
f.setVisible(true);
}
}class moto implements ActionListener { public void actionPerformed(ActionEvent arg0) {
Thread t = new MyThread();
t.start();
for (int i=0; i<500000;i++) {
System.out.println(""+i);
}
}
}class MyThread extends Thread {
public void run() {
JFrame d = new JFrame();
d.setBounds(200, 400, 200, 200);
d.add(new JLabel(new ImageIcon(".\\image\\ding.gif")));
d.setVisible(true);
}
}
[不堵塞也没有关系,如果B的运行对A没直接影响])B中调用C线程来 进行实际的后台操作(C可能会调用B的资源。。比如在B中显示当前处理进程,
C可以设计成B的内部类 方便访问B的资源)
[B和C如果是同一个线程 则 在C处理完以前 B是不可能有机会刷新显示的]B和C的 合作方式 就是一个后台操作 +界面显示机制 A只是让B启动出来如果只用2个线程的话 则 不需要A 直接 从B开始启动