这个程序目前只实现了无论点哪个按钮都出现一张图片,怎么才能每点一个按钮都会对应出现一幅照片,??不是三个按钮的图片都相同..
package tuxing1;import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;import com.sun.org.apache.bcel.internal.generic.RETURN;public class ButtonTest
{ public static void main(String[] args)
{
ButtonFrame  frame =new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }}class ButtonFrame extends JFrame
{
public ButtonFrame()
{

setTitle("ButtonTest");
setSize(400,400);
ButtonPanel panel = new ButtonPanel();
add(panel);
}
}class ButtonPanel extends JPanel
{
public ButtonPanel()
{

JButton yellowButton =new JButton("Yellow");
JButton buleButton =new JButton("Blue");
JButton redButton =new JButton("read");
add(yellowButton);
add(buleButton);
add(redButton);
ColorAction yellowAction = new ColorAction("111");
ColorAction blueAction =new ColorAction("222");
ColorAction redAction =new ColorAction("333");
yellowButton.addActionListener(yellowAction);
buleButton.addActionListener(blueAction);
redButton.addActionListener(redAction);

}
public void paintComponent(Graphics g)
{
super.paintComponent(g);

}

private class ColorAction implements ActionListener
{
public ColorAction(String s)
{
    w=s;
   
}

public void actionPerformed(ActionEvent event)
{

JFrame frame=new JFrame();
    frame.setTitle(w);
    frame.setSize(300,200);
    frame.setVisible(true);
    
    ImagePanel panel = new ImagePanel();
frame.add(panel);
}
class ImagePanel extends JPanel
{

 ImagePanel()
{


try
{
image=ImageIO.read(new File("F:\\照片\\1.jpg"));

}

catch(IOException e)
{
e.printStackTrace();
}
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(image!=null)
    g.drawImage(image, 5, 0, getWidth(), getHeight(), 0, 0, 
image.getWidth(null), image.getHeight(null), null); 

}
}

}
  
private String w;
private Image image;
}

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import java.io.File;
    import java.io.IOException;import javax.imageio.ImageIO;
    import javax.swing.*;
    import java.io.*;
    import javax.imageio.*;import com.sun.org.apache.bcel.internal.generic.RETURN;public class ButtonTest
    {    public static void main(String[] args)
        {
            ButtonFrame frame = new ButtonFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }}
    class ButtonFrame extends JFrame
    {
        public ButtonFrame()
        {        setTitle("ButtonTest");
            setSize(400, 400);
            ButtonPanel panel = new ButtonPanel();
            add(panel);
        }
    }
    class ButtonPanel extends JPanel
    {
        public ButtonPanel()
        {        JButton yellowButton = new JButton("Yellow");
            JButton buleButton = new JButton("Blue");
            JButton redButton = new JButton("read");
            add(yellowButton);
            add(buleButton);
            add(redButton);
            ColorAction yellowAction = new ColorAction("111");
            ColorAction blueAction = new ColorAction("222");
            ColorAction redAction = new ColorAction("333");
            yellowButton.addActionListener(yellowAction);
            buleButton.addActionListener(blueAction);
            redButton.addActionListener(redAction);
        }
        public void paintComponent(Graphics g)
        {
            super.paintComponent(g);    }    private class ColorAction implements ActionListener
        {
            public ColorAction(String s)
            {
                w = s;
            }
            public void actionPerformed(ActionEvent event)
            {            JFrame frame = new JFrame();
                frame.setTitle(w);
                frame.setSize(300, 200);
                frame.setVisible(true);
                ImagePanel panel = new ImagePanel(event.getActionCommand());
                frame.add(panel);
            }        class ImagePanel extends JPanel
            {
                ImagePanel()
                {
                    image = null;
                }            ImagePanel(String buttonTag)
                {
                    image = null;
                    try
                    {
                        if (buttonTag == "Yellow")
                        {
                            image = ImageIO.read(new File("d:\\1.jpg"));
                        }
                        else if (buttonTag == "Blue")
                        {
                            image = ImageIO.read(new File("d:\\2.jpg"));
                        }
                        else if (buttonTag == "read")
                        {
                            image = ImageIO.read(new File("d:\\2.jpg"));
                        }
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                public void paintComponent(Graphics g)
                {
                    super.paintComponent(g);
                    if (image != null)
                        g.drawImage(image, 5, 0, getWidth(), getHeight(), 0, 0,
                            image.getWidth(null), image.getHeight(null), null);            }
            }    }    private String w;
        private Image image;
    }
      

  2.   

    你的问题出在这个方法上:
    public void actionPerformed(ActionEvent event) 
    { JFrame frame=new JFrame(); 
        frame.setTitle(w); 
        frame.setSize(300,200); 
        frame.setVisible(true); 
         
        ImagePanel panel = new ImagePanel(); 
        frame.add(panel); 

     应该改为:
    public void actionPerformed(ActionEvent event) 

      JFrame frame=new JFrame(); 
      frame.setTitle(w); 
      ImagePanel panel = new ImagePanel(); 
      frame.add(panel); //先把panel放到frame中
      frame.setSize(300,200); //再设置frame的属性
      frame.setVisible(true); 

      

  3.   

    public void actionPerformed(ActionEvent event) 
    { JFrame frame=new JFrame(); 
        frame.setTitle(w); 
        frame.setSize(300,200); 
        frame.setVisible(true); 
         
        ImagePanel panel = new ImagePanel(); 
    frame.add(panel); 
    } 有几种方式,你把这个类放到  包含button类里,然后判断事件源 
    if( event.getSource() = redButton) {}else if(..){}else{}
    也可以像前面的人说的那样,每个button一个 action类
      

  4.   


    确实原理不是复杂,
    一个按钮做一监听器放一个图片,不哦过在监听器里边触发的时候首先要清空那个lable中的图片,然后在现实你按钮的那个图片.