//JavaTest.java
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class JavaTest extends JFrame {
static JSlider slider;
static JButton jb1,jb2;
WPanel sPanel;
static double time=1000;//单位毫秒
public JavaTest(String s){
super(s);
Container contentPane=getContentPane();
//north
JPanel panel=new JPanel(new GridLayout(1,2));
slider=new JSlider(JSlider.HORIZONTAL,0,5000,2000); //控制浏览图片间隔时间
slider.setBorder(BorderFactory.createTitledBorder("滑动最大时间为5秒"));
slider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
time=slider.getValue();
slider.setBorder(BorderFactory.createTitledBorder("间隔时间为"+time/1000+"秒"));
}
});
panel.add(slider);
JPanel panel1=new JPanel(new GridLayout(1,2));
jb1=new JButton("连续播放");
panel1.add(jb1);
jb1.addActionListener(sPanel);
jb2=new JButton("停止播放");
panel1.add(jb2);
jb2.addActionListener(sPanel);
panel.add(panel1);
contentPane.add(panel,BorderLayout.NORTH);
//center
sPanel=new WPanel();
contentPane.add(sPanel,BorderLayout.CENTER);
setSize(300,400);
}
public static void main(String[]args){
JavaTest javatest=new JavaTest("我喜欢你");
javatest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
javatest.setVisible(true);
javatest.pack();
}
}
//WPanel.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class WPanel extends JPanel implements ActionListener{
int m=0;
Image image[]=new Image[50],image1;
Timer timer;
public WPanel(){
super();
for(int i=1;i<=50;i++){
Toolkit tk=getToolkit();
image[i-1]=tk.getImage("图片\\"+i+".jpg");
}
}
public void paint(Graphics g ){
super.paint(g);
image1=image[m+1];
g.drawImage(image1, 0,0,this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==JavaTest.jb1){
JavaTest.time=JavaTest.slider.getValue();
timer=new Timer((int)JavaTest.time,this);
timer.start();
}
if(e.getSource()==JavaTest.jb2){
timer.stop();
}
if(e.getSource()==timer){
if(m>=50)
m=0;
image1=image[m];
m++;
repaint();
}
}
}
为什么JPanel中的图片无法自动播放呀
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class JavaTest extends JFrame {
static JSlider slider;
static JButton jb1,jb2;
WPanel sPanel;
static double time=1000;//单位毫秒
public JavaTest(String s){
super(s);
Container contentPane=getContentPane();
//north
JPanel panel=new JPanel(new GridLayout(1,2));
slider=new JSlider(JSlider.HORIZONTAL,0,5000,2000); //控制浏览图片间隔时间
slider.setBorder(BorderFactory.createTitledBorder("滑动最大时间为5秒"));
slider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
time=slider.getValue();
slider.setBorder(BorderFactory.createTitledBorder("间隔时间为"+time/1000+"秒"));
}
});
panel.add(slider);
JPanel panel1=new JPanel(new GridLayout(1,2));
jb1=new JButton("连续播放");
panel1.add(jb1);
jb1.addActionListener(sPanel);
jb2=new JButton("停止播放");
panel1.add(jb2);
jb2.addActionListener(sPanel);
panel.add(panel1);
contentPane.add(panel,BorderLayout.NORTH);
//center
sPanel=new WPanel();
contentPane.add(sPanel,BorderLayout.CENTER);
setSize(300,400);
}
public static void main(String[]args){
JavaTest javatest=new JavaTest("我喜欢你");
javatest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
javatest.setVisible(true);
javatest.pack();
}
}
//WPanel.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class WPanel extends JPanel implements ActionListener{
int m=0;
Image image[]=new Image[50],image1;
Timer timer;
public WPanel(){
super();
for(int i=1;i<=50;i++){
Toolkit tk=getToolkit();
image[i-1]=tk.getImage("图片\\"+i+".jpg");
}
}
public void paint(Graphics g ){
super.paint(g);
image1=image[m+1];
g.drawImage(image1, 0,0,this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==JavaTest.jb1){
JavaTest.time=JavaTest.slider.getValue();
timer=new Timer((int)JavaTest.time,this);
timer.start();
}
if(e.getSource()==JavaTest.jb2){
timer.stop();
}
if(e.getSource()==timer){
if(m>=50)
m=0;
image1=image[m];
m++;
repaint();
}
}
}
为什么JPanel中的图片无法自动播放呀
//JavaTest.java
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;public class JavaTest extends JFrame {
private static JSlider slider;
private static JButton startButton,stopButton;
private WPanel displayPanel;
private static int time=1000;//单位毫秒
private final int nImages = 50;
private Image[] images = new Image[nImages];
private Timer timer;
private int current = 0;
public JavaTest(String s){
super(s);
SwingUtilities.invokeLater(new Runnable(){
public void run(){
loadImages();
}
});
Container contentPane=getContentPane(); JPanel controlPanel=new JPanel(new GridLayout(1,2));
slider=new JSlider(JSlider.HORIZONTAL,0,5000,2000); //控制浏览图片间隔时间
slider.setBorder(BorderFactory.createTitledBorder("滑动最大时间为5秒"));
controlPanel.add(slider); JPanel buttonsPanel=new JPanel();
startButton=new JButton("Start");
stopButton=new JButton("Stop");
stopButton.setEnabled(false);
buttonsPanel.add(startButton);
buttonsPanel.add(stopButton);
controlPanel.add(buttonsPanel);
contentPane.add(controlPanel,BorderLayout.NORTH); displayPanel=new WPanel(images[0]);
contentPane.add(new JScrollPane(displayPanel),BorderLayout.CENTER); slider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
time=slider.getValue();
slider.setBorder(BorderFactory.createTitledBorder("间隔时间为"+time/1000+"秒"));
}
}); timer = new Timer(time,new ActionListener(){ public void actionPerformed(ActionEvent e){
if(current < nImages -1){
current ++;
}
else
current = 0;
displayPanel.setImage(images[current]);
}
});
startButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
timer.start();
slider.setEnabled(false);
stopButton.setEnabled(true);
startButton.setEnabled(false);
}
});
stopButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
timer.stop();
slider.setEnabled(true);
startButton.setEnabled(true);
stopButton.setEnabled(false);
}
});
setBounds(100,100,300,400);
} private void loadImages(){
Toolkit kit = Toolkit.getDefaultToolkit();
for(int i = 0; i < nImages; i++){
images[i] = kit.getImage("图片\\"+ (i+1) + ".jpg");
}
} public static void main(String[]args){
JavaTest javatest=new JavaTest("我喜欢你");
javatest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//javatest.pack();
javatest.setVisible(true);
}
}class WPanel extends JPanel{
private Image image;
public WPanel(Image image){
this.image = image;
setOpaque(false);
}
public void paintComponent(Graphics g ){
g.drawImage(image, 0,0,this);
super.paintComponent(g);
}
public void setImage(Image image){
this.image = image;
repaint();
} public Dimension getPreferredSize(){
return new Dimension(image.getWidth(null),image.getHeight(null));
}
}
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;public class JavaTest extends JFrame {
private JSlider slider;
private JButton startButton,stopButton;
private WPanel displayPanel;
private int time=1000;//单位毫秒
private static final int nImages = 50;
private Image[] images = new Image[nImages];
private Timer timer;
private int current = 0;
public JavaTest(String s){
super(s);
SwingUtilities.invokeLater(new Runnable(){
public void run(){
loadImages();
}
});
Container contentPane=getContentPane(); JPanel controlPanel=new JPanel(new GridLayout(1,2));
slider=new JSlider(JSlider.HORIZONTAL,0,5000,2000); //控制浏览图片间隔时间
slider.setBorder(BorderFactory.createTitledBorder("滑动最大时间为5秒"));
controlPanel.add(slider); JPanel buttonsPanel=new JPanel();
startButton=new JButton("Start");
stopButton=new JButton("Stop");
stopButton.setEnabled(false);
buttonsPanel.add(startButton);
buttonsPanel.add(stopButton);
controlPanel.add(buttonsPanel);
contentPane.add(controlPanel,BorderLayout.NORTH); displayPanel=new WPanel(images[0]);
contentPane.add(new JScrollPane(displayPanel),BorderLayout.CENTER); slider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
time=slider.getValue();
slider.setBorder(BorderFactory.createTitledBorder("间隔时间为"+time/1000+"秒"));
}
}); timer = new Timer(time,new ActionListener(){ public void actionPerformed(ActionEvent e){
if(current < nImages -1){
current ++;
}
else
current = 0;
displayPanel.setImage(images[current]);
}
});
startButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
timer.start();
slider.setEnabled(false);
stopButton.setEnabled(true);
startButton.setEnabled(false);
}
});
stopButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
timer.stop();
slider.setEnabled(true);
startButton.setEnabled(true);
stopButton.setEnabled(false);
}
});
setBounds(100,100,300,400);
} private void loadImages(){
Toolkit kit = Toolkit.getDefaultToolkit();
for(int i = 0; i < nImages; i++){
images[i] = kit.getImage("图片\\"+ (i+1) + ".jpg");
}
} public static void main(String[]args){
JavaTest javatest=new JavaTest("我喜欢你");
javatest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//javatest.pack();
javatest.setVisible(true);
}
}class WPanel extends JPanel{
private Image image;
public WPanel(Image image){
this.image = image;
setOpaque(false);
}
public void paintComponent(Graphics g ){
g.drawImage(image, 0,0,this);
super.paintComponent(g);
}
public void setImage(Image image){
this.image = image;
repaint();
} public Dimension getPreferredSize(){
return new Dimension(image.getWidth(null),image.getHeight(null));
}
}