Skip to content

Instantly share code, notes, and snippets.

@BobTheBuilderBot
Created October 9, 2012 06:11
Show Gist options
  • Select an option

  • Save BobTheBuilderBot/3856934 to your computer and use it in GitHub Desktop.

Select an option

Save BobTheBuilderBot/3856934 to your computer and use it in GitHub Desktop.
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ImageZoom implements ActionListener, ChangeListener {
private JFrame windowFrame;
private JFileChooser fileChooser;
private ImagePanel imagePanel;
private JSlider zoomSlider;
public static void main(String[] args) {
ImageZoom imageZoom = new ImageZoom();
imageZoom.createWindow();
imageZoom.createElements();
}
public ImageZoom() {
imagePanel = new ImagePanel();
fileChooser = new JFileChooser();
zoomSlider = new JSlider(1, 100, 10);
zoomSlider.setName("zoom");
zoomSlider.addChangeListener(this);
}
public void createWindow() {
windowFrame = new JFrame("Image Zoom");
windowFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
windowFrame.setPreferredSize(new Dimension(640, 480));
windowFrame.setVisible(true);
}
public void createElements() {
JMenu menu;
JMenuItem menuItem;
JMenuBar menuBar = new JMenuBar();
menu = new JMenu("File");
menuBar.add(menu);
menuItem = new JMenuItem("Open Image");
menu.add(menuItem);
menuItem.setActionCommand("openImage");
menuItem.addActionListener(this);
JPanel uiPanel = new JPanel();
uiPanel.setLayout(new BoxLayout(uiPanel, BoxLayout.Y_AXIS));
JSlider rotateSlider = new JSlider(0, 360, 0);
rotateSlider.setName("rotate");
rotateSlider.addChangeListener(this);
uiPanel.add(imagePanel);
uiPanel.add(zoomSlider);
uiPanel.add(rotateSlider);
windowFrame.add(uiPanel);
windowFrame.setJMenuBar(menuBar);
windowFrame.pack();
}
@Override
public void actionPerformed(ActionEvent event) {
if(event.getActionCommand() == "openImage") {
int returnValue = fileChooser.showOpenDialog(windowFrame);
if(returnValue == JFileChooser.APPROVE_OPTION) {
zoomSlider.setValue(10);
imagePanel.loadImage(fileChooser.getSelectedFile().getPath());
}
}
}
@Override
public void stateChanged(ChangeEvent e) {
JSlider slider = (JSlider) e.getSource();
if(slider.getName() == "zoom") {
imagePanel.zoom(getZoomAsFloat());
}
if(slider.getName() == "rotate") {
imagePanel.rotate(slider.getValue());
}
}
private float getZoomAsFloat() {
return zoomSlider.getValue() * 0.1f;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment