请问,怎么实现运行后出现三个按钮,然后点击三个按钮分别出来三幅照片.下面的程序仅实现了运行后出现三个按钮,分别点三个按钮出现三个面板,而没有出现照片,写
的有点乱,各位帮看下,急!!!!!
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, 在 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);
}
其他代码改造就不说了
{
JFrame frame = new JFrame(); frame.setVisible(true);
frame.setTitle(w); frame.setSize(300, 200); ImagePanel panel = new ImagePanel();
frame.add(panel);
}
然后再设置frame
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;
}