import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; public class ImageJFrame extends StandardJFrame { MyJButton myButton, close; Image myImage; int iWidth; int iHeight; MyCanvas myCanvas; ButtonHandler listener; JScrollPane scroller; JPanel holdclose; private class ButtonHandler implements ActionListener { public ButtonHandler() { } public void actionPerformed(ActionEvent ae) { System.out.println("Inner Class"); ImageJFrame.this.setVisible(false); myButton.setEnabled(true); scroller.getVerticalScrollBar().setValue(0); scroller.getHorizontalScrollBar().setValue(0); setSize(600, 600); } } public ImageJFrame(Image i, MyJButton mjb) { myButton = mjb; myImage = i; iWidth = myImage.getWidth(this); iHeight = myImage.getHeight(this); System.out.println("iWidth = " + iWidth + " and iHeight = " + iHeight); setVisible(false); setTitle("U.S. Flag!"); setSize(600, 600); // The setResizable function is true, by default. setResizable(true); myCanvas = new MyCanvas(); scroller = new JScrollPane(myCanvas, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); getContentPane().setLayout(new BorderLayout()); getContentPane().add(scroller, BorderLayout.CENTER); holdclose = new JPanel(); holdclose.setLayout(new FlowLayout(FlowLayout.CENTER)); close = new MyJButton(); close.setText("Close"); close.setVisible(true); holdclose.add(close); holdclose.setBackground(Color.BLACK); holdclose.setOpaque(true); listener = new ButtonHandler(); close.addActionListener(listener); getContentPane().add(holdclose, BorderLayout.SOUTH); } public void windowClosing(WindowEvent we) { scroller.getVerticalScrollBar().setValue(0); scroller.getHorizontalScrollBar().setValue(0); System.out.println("closing"); myButton.setEnabled(true); setVisible(false); setSize(600, 600); } private class MyCanvas extends JPanel { public MyCanvas() { setLayout(null); setPreferredSize(new Dimension(iWidth, iHeight)); setVisible(true); setBackground(Color.BLACK); setOpaque(true); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(myImage, 0, 0, this); } } }