我想用来JScrollBar
放大和缩小图像,但它不起作用。我的代码有什么问题?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class piczoominandout extends JFrame
{
public JScrollBar scroll;
public JLabel lbl;
public Image image;
public int x, y, width, height;
public piczoominandout()
{
super("picture zoom");
Toolkit toolkit = Toolkit.getDefaultToolkit();
image = toolkit.getImage("Snake.jpg");
Container c = getContentPane();
ImagePanel imagePane = new ImagePanel(image);
c.setLayout(new BorderLayout());
lbl = new JLabel("0");
c.add(lbl, BorderLayout.SOUTH);
scroll = new JScrollBar(
JScrollBar.HORIZONTAL,50,10,0,100);
scroll.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(
AdjustmentEvent evt) {
JScrollBar s = (JScrollBar)evt.getSource();
if ( !s.getValueIsAdjusting() ) {
int v = (int)s.getValue();
width +=v;
height +=v;
repaint();
lbl.setText(Integer.toString(v));
}
} });
c.add(imagePane,BorderLayout.CENTER );
c.add(scroll, BorderLayout.NORTH);
}
class ImagePanel extends JPanel
{
public ImagePanel(Image img) { image = img;}
public void paintComponent(Graphics g)
{
Insets ins = getInsets();
super.paintComponent(g);
width = image.getWidth(this);
height = image.getHeight(this);
x = ins.left+5; y = ins.top+5;
g.drawImage(image,x,y,width,height,this);
}
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run()
{
piczoominandout frame = new piczoominandout();
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frame.setSize(600,300);
frame.setVisible(true);
}
});
}
}