Rieccomi qui per l'ennesimo problema, fiducioso nel vostro aiuto
Allora, ho creato un semplice programma che legge un'immagine e la visualizza su un JPanel con paintComponent. Quando l'immagine è più grande delle dimensioni del JFrame, automaticamente vengono aggiunti le scrollbar per visualizzare tutta l'immagine, e fin qui tutto ok. Se provo a scegliere un'altra immagine, continua a visualizzarla correttamente, e automaticamente continua ad impostare le dimensioni delle scrollbar in modo corretto. Ho poi aggiunto un tasto per zoomare l'immagine, cioè ingrandirla. Se lo premo, l'immagine viene ingrandita correttamente ma... le scrollbar rimangono le stesse a meno che non ingrandisco/ridimensiono la finestra col mouse, eppure è strano, perchè se si preme questo tasto dopo vengono eseguite le stesse operazioni di quando si sceglie una nuova immagine... spero che qualcuno mi aiuti
Questo il frammento di codice interessato:
codice:if (event.getSource() == pic) { JFileChooser fileChooser = new JFileChooser(); fileChooser.setAcceptAllFileFilterUsed (false); fileChooser.addChoosableFileFilter (new FileNameExtensionFilter ("File immagine", "png", "gif", "jpg", "jpeg", "bmp")); int result = fileChooser.showOpenDialog (null); if (result == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { try { image = ImageIO.read (file); } catch (Exception exception) { JOptionPane.showMessageDialog (Zoom.this, "Errore durante il caricamento dell'immagine", "Errore", JOptionPane.ERROR_MESSAGE); System.exit (1); }; setPreferredSize (new Dimension (image.getWidth (Zoom.this), image.getHeight (Zoom.this))); flag = true; } } } else if (event.getSource() == moreZoom) { newWidth = image.getWidth (Zoom.this) + (image.getWidth (Zoom.this) * 50 / 100); newHeight = image.getHeight (Zoom.this) + (image.getHeight (Zoom.this) * 50 / 100); setPreferredSize (new Dimension (newWidth, newHeight)); flag = false; } scroll.updateUI(); repaint();



Rispondi quotando