请问,怎么实现运行后出现三个按钮,然后点击三个按钮分别出来三幅照片.下面的程序仅实现了运行后出现三个按钮,分别点三个按钮出现三个面板,而没有出现照片,写
的有点乱,各位帮看下,急!!!!!
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.setVisible(true);
    frame.setTitle(w);
    
    frame.setSize(300,200);
    
    ImagePanel panel = new ImagePanel();
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);

g.drawImage(image,0,0,null);


}
}

}

  



private String w;
private Image image;
}

解决方案 »

  1.   

    2个问题
    1, 在 actionPerformed 方法里, 在add(panel); 前面加个frame =====>frame.add(panel); 
    2, 调整下顺序,同样是actionPerformed 方法里,
    public void actionPerformed(ActionEvent event) { JFrame frame = new JFrame();
    ImagePanel panel = new ImagePanel();
    frame.add(panel);//先加进去,再设置frame,不然画出的panel需要动一下才会显示,你可以按原来顺序试下就知道了
    frame.setTitle(w);
    frame.setSize(300, 200);
    frame.setVisible(true);
    }
     其他代码改造就不说了
      

  2.   

            public void actionPerformed(ActionEvent event)
            {
                JFrame frame = new JFrame();            frame.setVisible(true);
                frame.setTitle(w);            frame.setSize(300, 200);            ImagePanel panel = new ImagePanel();
                frame.add(panel);
            }
      

  3.   

    这个:frame.add(panel);
    然后再设置frame 
      

  4.   

    慢了点,不好意思.要注意的地方注释里都有,LZ看下就是了
    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();
    ImagePanel panel = new ImagePanel();
    frame.add(panel);//要加上frame才行!
    frame.setTitle(w);
    frame.setSize(300, 200);
    frame.setVisible(true);//这三个顺序很固定
    } 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);
    Graphics2D g2 = (Graphics2D) g; if (image != null) {
    g2.drawImage(image, 5, 0, getWidth(), getHeight(), 0, 0,
    image.getWidth(null), image.getHeight(null), null);
    }
    // 这样写更加科学
    }
    }
    } private String w; private Image image;
    }
      

  5.   

    楼主要单步调试啊,ide的单步调试功能会帮你解决问题,