I have a scrollpane where load an image. I wont this image with her natural size, and if this image is too big, I wont activated the scrollbar, but this instruction
g.drawImage(immagine, 0, 0, getWidth(), getHeight(), this);
scaled image for placing in scrollpane. What can I do?
Class Gui:
import java.awt.*; import java.awt.event.*; import java.io.File; import javax.swing.*; public class Gui implements ActionListener { private JFrame frmEditor; private Mappa content; private JMenuItem mntmSfondo; private JScrollPane scrollabile; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Gui window = new Gui(); window.frmEditor.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public Gui() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frmEditor = new JFrame(); frmEditor.setFont(UIManager.getFont("TextArea.font")); frmEditor.setBounds(50, 50, 1024, 768); frmEditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frmEditor.getContentPane().setLayout(new BorderLayout(0, 0)); JPanel panelTile = new JPanel(); panelTile.setLayout(new BorderLayout(0, 0)); content = new Mappa(null); content.setMinimumSize(new Dimension(150, 150)); scrollabile = new JScrollPane(content); frmEditor.getContentPane().add(scrollabile, BorderLayout.CENTER); inizializzaMenu(); } /** * Initialize the menu. */ private void inizializzaMenu() { JMenuBar menuBar = new JMenuBar(); frmEditor.setJMenuBar(menuBar); JMenu mnAltro = new JMenu("Modify"); menuBar.add(mnAltro); mntmSfondo = new JMenuItem("Load Background"); mntmSfondo.addActionListener(this); mnAltro.add(mntmSfondo); } public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == mntmSfondo) { JFileChooser fc = new JFileChooser("tuttiSfondi"); int result = fc.showOpenDialog(null); if (result == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); try { content.setImage(file); //content = new Mappa(file); //scrollabile.setViewportView(content); } catch (Exception ex) { } } if (result == JFileChooser.CANCEL_OPTION) { } } } }
Class Mappa:
import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; import javax.swing.*; public class Mappa extends JPanel { BufferedImage immagine; public Mappa(File fileImmagine) { if (fileImmagine != null ) { BufferedImage img = null; try { img = ImageIO.read(new File(fileImmagine.getPath())); } catch (IOException e) { e.printStackTrace(); } this.immagine = img; } repaint(); } public void setImage(File file) throws IOException { this.immagine = ImageIO.read(file); String name = file.getPath(); System.out.println(name); repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); g.clearRect(0, 0, 4000, 4000); g.drawImage(this.immagine, 0, 0, getWidth(), getHeight(), this); System.out.println("Called Repaint() on Mappa"); } }