本人JAVA菜鸟一个,课程设计要求做一个动画。本来想实现类似幻灯片的效果,可以一幅图片一幅图片的轮流显示,并不断循环。可无奈JAVA底子太薄,只写出了一个半成品的程序,希望有高手不吝赐教。不胜感激~
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;public class TestSimpleRunnable extends JApplet implements ActionListener
{
private String str;
private Thread myThread;
Image bgImage1,bgImage2,bgImage3,bgImage4,bgImage5;
public void init()
{
bgImage1 = this.getImage(this.getCodeBase(),".//image//bg1.jpg");
bgImage2 = this.getImage(this.getCodeBase(),".//image//bg2.jpg");
bgImage3 = this.getImage(this.getCodeBase(),".//image//bg3.jpg");
bgImage4 = this.getImage(this.getCodeBase(),".//image//bg4.jpg");
bgImage5 = this.getImage(this.getCodeBase(),".//image//bg5.jpg");
bgImage6 = this.getImage(this.getCodeBase(),".//image//bg6.jpg");
buildUI(this.getContentPane(),bgImage1,bgImage2,bgImage3,bgImage4,bgImage5);
}
//build UI
void buildUI(Container container,Image baImage1,Image baImage2,Image baImage3,Image baImage4,Image baImage5)
{
int fps = 1;
animatorPane = new AnimatorPane(bgImage1,bgImage2,bgImage3,bgImage4,bgImage5);
container.add(animatorPane,BorderLayout.CENTER);
}
//main method
public static void main(String [] args)
{
Image bgImage1 = Toolkit.getDefaultToolkit().getImage(".//image//bg1.jpg");
Image bgImage2 = Toolkit.getDefaultToolkit().getImage(".//image//bg2.jpg");
Image bgImage3 = Toolkit.getDefaultToolkit().getImage(".//image//bg3.jpg");
Image bgImage4 = Toolkit.getDefaultToolkit().getImage(".//image//bg4.jpg");
Image bgImage5 = Toolkit.getDefaultToolkit().getImage(".//image//bg5.jpg");
JFrame jframe = new JFrame("杨斌");
BorderLayout f1=new BorderLayout();
f1.setHgap(10);
jframe.setLayout(f1);
JButton jbutton=new JButton("个人信息");
jframe.add (jbutton,f1.NORTH);
jbutton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
Frame a=new Frame();
final Dialog b=new Dialog(a);
b.setTitle("我的信息");
b.add(new Label("姓名:杨斌 学号:20080254"));
b.setSize(220,80);
b.setLocation(120,250);
b.setVisible(true);
b.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ b.dispose();
}
});
}
});
public TestSimpleRunnable(String str)
{
this.str=str;
}
public void myStart()
{
myThread = new Thread(this.str);
myThread.start();
}
public void run()
{
for (int i = 0;i;i++)
{
System.out.println(i + " " +myThread.getImage());
try
{
myThread.sleep((long)(Math.random() * 1000));
}catch(InterruptedException e){}
}
}
public static void main(String[] args)
{
new TestSimpleRunnable("bgImage1").myStart();
new TestSimpleRunnable("bgImage2").myStart();
new TestSimpleRunnable("bgImage3").myStart();
new TestSimpleRunnable("bgImage4").myStart();
new TestSimpleRunnable("bgImage5").myStart();
}
}
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;public class TestSimpleRunnable extends JApplet implements ActionListener
{
private String str;
private Thread myThread;
Image bgImage1,bgImage2,bgImage3,bgImage4,bgImage5;
public void init()
{
bgImage1 = this.getImage(this.getCodeBase(),".//image//bg1.jpg");
bgImage2 = this.getImage(this.getCodeBase(),".//image//bg2.jpg");
bgImage3 = this.getImage(this.getCodeBase(),".//image//bg3.jpg");
bgImage4 = this.getImage(this.getCodeBase(),".//image//bg4.jpg");
bgImage5 = this.getImage(this.getCodeBase(),".//image//bg5.jpg");
bgImage6 = this.getImage(this.getCodeBase(),".//image//bg6.jpg");
buildUI(this.getContentPane(),bgImage1,bgImage2,bgImage3,bgImage4,bgImage5);
}
//build UI
void buildUI(Container container,Image baImage1,Image baImage2,Image baImage3,Image baImage4,Image baImage5)
{
int fps = 1;
animatorPane = new AnimatorPane(bgImage1,bgImage2,bgImage3,bgImage4,bgImage5);
container.add(animatorPane,BorderLayout.CENTER);
}
//main method
public static void main(String [] args)
{
Image bgImage1 = Toolkit.getDefaultToolkit().getImage(".//image//bg1.jpg");
Image bgImage2 = Toolkit.getDefaultToolkit().getImage(".//image//bg2.jpg");
Image bgImage3 = Toolkit.getDefaultToolkit().getImage(".//image//bg3.jpg");
Image bgImage4 = Toolkit.getDefaultToolkit().getImage(".//image//bg4.jpg");
Image bgImage5 = Toolkit.getDefaultToolkit().getImage(".//image//bg5.jpg");
JFrame jframe = new JFrame("杨斌");
BorderLayout f1=new BorderLayout();
f1.setHgap(10);
jframe.setLayout(f1);
JButton jbutton=new JButton("个人信息");
jframe.add (jbutton,f1.NORTH);
jbutton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
Frame a=new Frame();
final Dialog b=new Dialog(a);
b.setTitle("我的信息");
b.add(new Label("姓名:杨斌 学号:20080254"));
b.setSize(220,80);
b.setLocation(120,250);
b.setVisible(true);
b.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ b.dispose();
}
});
}
});
public TestSimpleRunnable(String str)
{
this.str=str;
}
public void myStart()
{
myThread = new Thread(this.str);
myThread.start();
}
public void run()
{
for (int i = 0;i;i++)
{
System.out.println(i + " " +myThread.getImage());
try
{
myThread.sleep((long)(Math.random() * 1000));
}catch(InterruptedException e){}
}
}
public static void main(String[] args)
{
new TestSimpleRunnable("bgImage1").myStart();
new TestSimpleRunnable("bgImage2").myStart();
new TestSimpleRunnable("bgImage3").myStart();
new TestSimpleRunnable("bgImage4").myStart();
new TestSimpleRunnable("bgImage5").myStart();
}
}
你自己再完美一下吧,增加健壮性之类的
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;public class Test4Timer extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L; /**
* @param args
*/
public static void main(String[] args) {
Test4Timer tt =new Test4Timer();
tt.start();
tt.setVisible(true);
tt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} private final JLabel l = new JLabel();
private List<ImageIcon> images = new ArrayList<ImageIcon>();
public Test4Timer() {
setSize(500, 400);
getContentPane().add(l);
images.add(new ImageIcon("E:\\DESK\\IMG_1591.jpg"));
images.add(new ImageIcon("E:\\DESK\\IMG_17071.jpg"));
} public void start() {
Timer t = new Timer("My timer", true);
t.schedule(new TimerTask() { @Override
public void run() {
int i = (int) (images.size() * Math.random());
System.out.println("" + i);
ImageIcon ii = images.get(i);
l.setIcon(ii);
}
}, 1000, 1000);
}
}
import java.awt.*;import javax.swing.*;import java.awt.event.*;public class TestImage implements ActionListener{ JPanel jp1 = new JPanel(); CardLayout cl = new CardLayout(); Timer t = new Timer(1000,this); public void actionPerformed(ActionEvent ae) { String comm = ae.getActionCommand(); if("next".equals(comm)){ cl.next(jp1); }else if("previous".equals(comm)){ cl.previous(jp1); }else if("first".equals(comm)){ cl.first(jp1); }else if("last".equals(comm)){ cl.last(jp1); }else if("play".equals(comm)){ t.start(); }else if("stop".equals(comm)){ t.stop(); }else { cl.next(jp1); } } public TestImage(){ JFrame jf = new JFrame("TestFlow"); String[] image = {"c:\\1.jpg", "c:\\2.jpg","c:\\3.jpg","c:\\4.jpg"}; JLabel[] jl = new JLabel[image.length]; jp1.setLayout(cl); for(int i=0;i<jl.length;i++){ Icon ic = new ImageIcon(image[i]); jl[i] = new JLabel(ic); jp1.add(jl[i],i+""); } JPanel jp2 = new JPanel(); String[] butt = {"first","next","previous","last","play","stop"}; for(int i=0;i<butt.length;i++){ JButton jb = new JButton(butt[i]); jp2.add(jb); jb.addActionListener(this); } jf.add(jp1); jf.add(jp2,BorderLayout.SOUTH); jf.pack(); jf.setLocation(200,100); jf.setVisible(true); jf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestImage(); } }
truediego的程序我改了图片路径之后,还是只会显示一个空白窗体,图片没办法显示,可能是我的路径设得不正确了。
先回复一下,感谢各位帮忙,我先接着看程序了,希望能弄好。