Hallo,
mein Formular muss mit Bildern aus dem Internet gefüllt werden (JLabel mit ImageIcons). Bisher hab ich das so gelöst! (Da der Code sehr komplex stelle ich nur den Code hinein der beim Ladevorgang durchlaufen wird!)
Pro bild wird ein JPanel befüllt, welches dann in einer JList angezeigt wird. Mit dem oben gezeigten
funktionierte alles perfekt! Der einzige Nachteil dieser Methode war / ist, das die Bilder währen der Laufzeit im Arbeitsspeicher gespeichert werden. So kann es sein das ein Formularaufruf (ja nach Anzahl und größe der Bilder) den von Programm belegten Speicher ab und an mal auf 1,5 - 2 GB steigen lassen kann.
Um dieses Problem zu lösen, hab ich als neuen Ansatz überlegt, die Bilder im TEMP-Verzeichnis zwischen zu speichern und sie daraus anzeigen zu lassen. Daher hab ich die
wie folgt umgeschrieben:
Der Download wird nun von der Methode
übernommen. Das Funktioniert die Bilder sind nacher alle im unter
zu finden und lassen sich auch mit einem Bildbearbeitungsprogramm öffnen (Datein sind also nicht beschädigt oder so).
Auch meine Liste wird Angezeigt nur leider sind die Label die die ImageIcons anzeigen sollen leer und ich verstehe nicht warum.
Gruß
mein Formular muss mit Bildern aus dem Internet gefüllt werden (JLabel mit ImageIcons). Bisher hab ich das so gelöst! (Da der Code sehr komplex stelle ich nur den Code hinein der beim Ladevorgang durchlaufen wird!)
Java:
public ImageIcon loadPicture( String adress, int width, int height, int id, int option ) throws IOException {
ImageIcon icon = null;
switch ( option ) {
case 0 :
icon = new ImageIcon( new URL(adress) );
break;
[...]
}
icon.setImage( icon.getImage().getScaledInstance( width, height, Image.SCALE_DEFAULT ) );
return icon;
}
Pro bild wird ein JPanel befüllt, welches dann in einer JList angezeigt wird. Mit dem oben gezeigten
Code:
loadPicture()
Um dieses Problem zu lösen, hab ich als neuen Ansatz überlegt, die Bilder im TEMP-Verzeichnis zwischen zu speichern und sie daraus anzeigen zu lassen. Daher hab ich die
Code:
loadPicture()
Java:
public ImageIcon loadPicture( String adress, int width, int height, int id, int option ) throws IOException {
ImageIcon icon = null;
switch ( option ) {
case 0 :
StringTokenizer t = new StringTokenizer( adress, "/", false );
String filename = null;
while ( t.hasMoreTokens() ) {
filename = t.nextToken();
}
downloadPicture( adress, null, filename, COVER_TEMP );
Image img = ImageIO.read( new File( System.getProperty( "java.io.tmpdir" ) + filename ));
icon = new ImageIcon( img );
break;
[...]
}
icon.setImage( icon.getImage().getScaledInstance( width, height, Image.SCALE_DEFAULT ) );
return icon;
}
Der Download wird nun von der Methode
Code:
downloadPicture( adress, null, filename, COVER_TEMP );
Code:
C:\Users\[I][Mein_Username][/I]\AppData\Local\Temp\[I][Dateiname][/I]
Auch meine Liste wird Angezeigt nur leider sind die Label die die ImageIcons anzeigen sollen leer und ich verstehe nicht warum.
Gruß