Salve a tutti.
Ho un problema con lo JScrollPanel.
Praticamente, dovrei caricare un'immagine all'interno dello JScrollPanel. All'avvio dell'applicazione, va tutto bene. Se cambio immagine (scegliendo il path da un JTree), mi carica lo JScrollPane vuoto, con niente all'interno.
VI posto parte del codice per chiarimenti
[code]
//funzione che apre l'immagine
public void open()
{
try
{
this.image = ImageIO.read(new File(getPathFile()));
this.imageToDraw = Toolkit.getDefaultToolkit().createImage(image.getS ource());
}
catch(Exception e)
{
return;
}
//funzione che ritorna lo JScrollPanel iniziale
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(2, 3, 236, 538));
jScrollPane.setViewportView(getJTree1());
}
return jScrollPane;
}
//funzione che genera l'albero (lo prende da un'altra classe) e gestisce il listener. lo //stringTOkenizer è messo per prendere il path del file selezionato nel formato // /home/cartella/file
private JTree getJTree1() {
if (jTree1 == null) {
try{
FileTree fileTree =new FileTree();
jTree1 = fileTree.getJTree();
jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)
jTree1.getLastSelectedPathComponent();
if (node == null)
return;
if(node.isLeaf())
{
TreePath path = jTree1.getSelectionPath();
if(path != null)
{
StringTokenizer tokenPath = new StringTokenizer(path.toString(), "[/,]");
int countToken = tokenPath.countTokens();
String toPrint = "";
String newPicPath = "";
for(int i = 0; i<countToken; i++)
{
toPrint = tokenPath.nextToken();
if(toPrint.startsWith(" "))
toPrint = toPrint.replaceFirst(" ", "/");
newPicPath = newPicPath+toPrint;
}
setPathFile(newPicPath);
//updateScrollPane dovrebbe aggiornare lo scrollPanel
updateScrollPane();
toPrint = "";
newPicPath = "";
repaint();
}
}
}
});
}
catch(Exception e)
{
e.printStackTrace();
}
}
return jTree1;
}
//funzione che aggiorna (o dovrebbe aggiornare) lo JScrollPanel... mi crea Lo scrollpanel, lo inserisce nel pannello, però l'interno è vuoto.
private void updateScrollPane()
{
if(jScrollPane1 != null)
{
this.remove(jScrollPane1);
this.repaint();
}
open();
this.ii = new ImageIcon(imageToDraw);
JLabel label = new JLabel(ii);
add(label, null);
this.jScrollPane1 = new JScrollPane(label);
this.jScrollPane1.setBounds(new Rectangle(245, 4, 700, 627));
this.jScrollPane1.setVisible(true);
add(jScrollPane1, null);
}
Cosa c'è di sbagliato? Grazie mille. (PS, ho anche provato a inserire una JTextArea al posto della label, giusto per vedere se vi erra un errore nell'algoritmo di presa path dall'albero (anche se, tramite istruzioni di print, l'output lo prende e lo tokenizza in modo corretto) ma, anche mettendo una textArea, lo ScrollPanel risulta vuoto...
grazie mille a chiunque voglia aiutarmi.