原代码如下:/**
@version 1.30 2000-06-02
@author Cay Horstmann
*/import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;public class LabelImage
{
public static void main(String[] args)
{
ImageFrame frame = new ImageFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}/**
A frame with an image panel1
*/
class ImageFrame extends JFrame//一个最简单的Frame只需以下语句
{
public ImageFrame()
{ //得到图片的长和宽并传递给Frame的长和宽。 int HEIGHT= 400;
int WIDTH =400;
setTitle("ImageTest");
setSize(WIDTH, HEIGHT);
// add panel to frame ImagePanel panel = new ImagePanel();
Container contentPane = getContentPane();
contentPane.add(panel);}
}
/**
A panel that displays a tiled image
*/
class ImagePanel extends JPanel
{
public ImagePanel()//为了得到图片而增加的方法
{
image =new ImageIcon(n) ;
label.setIcon(image);
this.add(label);
setLayout(new BorderLayout());
JPanel panel = new JPanel(); JButton nextButton = new JButton("NEXT");
panel.add(nextButton);
nextButton.addActionListener(new NextAction()); JButton preButton = new JButton("Preview");
panel.add(preButton);
preButton.addActionListener(new PreAction());
this.add(panel,BorderLayout.SOUTH); } public void paintComponent(Graphics g)
{
super.paintComponent(g);
}
private class NextAction implements ActionListener{
//让文件名加1
public void actionPerformed(ActionEvent e) {
if(i==7)
{JOptionPane.showMessageDialog(null,new String ("没有了,只有这3张!"));
return;
}
i=i+1;
System.out.println(n);
n=((String)(i+".jpg"));
label.setIcon(image);
repaint();
System.out.println(n);
}
}
private class PreAction implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(i==5){
JOptionPane.showMessageDialog(ImagePanel.this,new String("Only 3 pic"));
return;
}
i=i-1;
System.out.println(n);
n=((String)(i+".jpg"));
label.setIcon(image);
repaint();
System.out.println(n);
}}
public String n="5.jpg";//代表加载的那个jpg文件.
private ImageIcon image;
private JLabel label;
private int i=5;}
@version 1.30 2000-06-02
@author Cay Horstmann
*/import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;public class LabelImage
{
public static void main(String[] args)
{
ImageFrame frame = new ImageFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}/**
A frame with an image panel1
*/
class ImageFrame extends JFrame//一个最简单的Frame只需以下语句
{
public ImageFrame()
{ //得到图片的长和宽并传递给Frame的长和宽。 int HEIGHT= 400;
int WIDTH =400;
setTitle("ImageTest");
setSize(WIDTH, HEIGHT);
// add panel to frame ImagePanel panel = new ImagePanel();
Container contentPane = getContentPane();
contentPane.add(panel);}
}
/**
A panel that displays a tiled image
*/
class ImagePanel extends JPanel
{
public ImagePanel()//为了得到图片而增加的方法
{
image =new ImageIcon(n) ;
label.setIcon(image);
this.add(label);
setLayout(new BorderLayout());
JPanel panel = new JPanel(); JButton nextButton = new JButton("NEXT");
panel.add(nextButton);
nextButton.addActionListener(new NextAction()); JButton preButton = new JButton("Preview");
panel.add(preButton);
preButton.addActionListener(new PreAction());
this.add(panel,BorderLayout.SOUTH); } public void paintComponent(Graphics g)
{
super.paintComponent(g);
}
private class NextAction implements ActionListener{
//让文件名加1
public void actionPerformed(ActionEvent e) {
if(i==7)
{JOptionPane.showMessageDialog(null,new String ("没有了,只有这3张!"));
return;
}
i=i+1;
System.out.println(n);
n=((String)(i+".jpg"));
label.setIcon(image);
repaint();
System.out.println(n);
}
}
private class PreAction implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(i==5){
JOptionPane.showMessageDialog(ImagePanel.this,new String("Only 3 pic"));
return;
}
i=i-1;
System.out.println(n);
n=((String)(i+".jpg"));
label.setIcon(image);
repaint();
System.out.println(n);
}}
public String n="5.jpg";//代表加载的那个jpg文件.
private ImageIcon image;
private JLabel label;
private int i=5;}
知道了,是label没有初始化谢谢各位
你还是写上绝对路径吧
但是却不能改变label呢?各位发发言啊。
晚上11点结帐!
接上文:
和 public ImagePanel()//为了得到图片而增加的方法
{
image =new ImageIcon(n) ; }
你在
}方法体中。public void actionPerformed(ActionEvent e) {
if(i==5){
JOptionPane.showMessageDialog(ImagePanel.this,new String("Only 3 pic"));
return;
}
i=i-1;
System.out.println(n);
n=((String)(i+".jpg"));
image =new ImageIcon(n) ;
label.setIcon(image);
repaint();
System.out.println(n);
}