package com;import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class EventImageTest extends JFrame 
{

JButton spread; JPanel right;
         JPanel left;

protected PanelTest pt = new PanelTest();
   
public EventImageTest() 
{
super("Test");
setLayout(null);
setSize(800, 600);

        
left = new JPanel();
right = new JPanel();
left.setLayout(null);
left.setBounds(10, 10, 200, 500);
left.setBackground(Color.blue);
        //扩大按钮
spread = new JButton("扩大");
spread.setBounds(30, 30, 60, 30);
spread.addMouseListener(new MymoveMouse());
        //缩小按钮
shorten = new JButton("缩小");
shorten.setBounds(30, 90, 60, 30);
shorten.addMouseListener(new MyShortenMouse());
//还原按钮
revert = new JButton("还原");
revert.setBounds(30, 150, 60, 30);
revert.addMouseListener(new MyRevertMouse());
left.add(spread);
left.add(shorten);
left.add(revert);

        /**右容器中重写了JPANEL中的PAINT方法
         * 在其中加载一副图片
         */

right = new JPanel();
right.setLayout(null);
right.setBounds(230, 10, 500, 500);
right.setBackground(Color.cyan);
        //加入图片
pt.setImageFile("E:\\Sunset.jpg");
pt.addMouseMotionListener(new MyShiftMouse());
pt.setVisible(true);
pt.setSize(400, 400);
right.add(pt);
        //把left,right加入JFRAME中
add(left);
add(right);
this.getContentPane().setBackground(Color.YELLOW);
this.setVisible(true);
} public static void main(String args[])
{
new EventImageTest();
}
    //扩大命令按钮响应的事件
class MymoveMouse extends MouseAdapter
{
public void mouseClicked(MouseEvent e) 
{  
                            pt.re();

}
}
     }
}PanelTest类
package com;
import java.awt.Graphics;
import java.awt.Image;import javax.swing.ImageIcon;
import javax.swing.JPanel;class PanelTest extends JPanel
{
/**
 * 
 */
private static final long serialVersionUID = 1L;
protected Image img;
protected ImageIcon imageicon;
int w ; int h ;



public PanelTest()
{
super();

}

public void setImageFile(String url)
{
imageicon = new ImageIcon(url);
img = imageicon.getImage();
w = img.getWidth(this);
h = img.getHeight(this);
}

public void paint(Graphics g)
{
if(null == img)
{
g.drawString("image is null!",50,50);
}
else


g.drawImage(img,100,100,w+10,h+10,null);
}
public void re()
{   


repaint();
}
}

解决方案 »

  1.   

    请你先说明一下现在问题出在哪里?你能开始的时候看到图片吗?另外,可以直接给一个button加actioncommand,然后这个frame implements ActionListener,没有必要家那么多mouseListener.像这样:public class EventImageTest extends JFrame implements ActionListener {
    ...
    spread = new JButton("bigger");
    spread.setActionCommand("spread");
    ...
    public void actionPerformed(ActionEvent e) {
     String actionCommand = e.getActionCommand();
    if(actionCommand.equals("spread")){
    pt.re();
    }
    }....