grafiken aus bestimmtem ordner anzeigen

Status
Nicht offen für weitere Antworten.
H

hansruedi

Gast
hallo zusammen

ich schreibe ein projekt mit frames. es sollen bilder aus einem bestimmtem ordner (pfad ist gegeben, zusammengsesetzt von eingaben des benutzers) eingelesen werden. dann werden die bilder verkleinert (da weiss ich schon wie), und werden dann in einem bereich im frame angezeigt. und zwar 3 nebeneinander und dann reihen nach unten bis alle bilder dieses ordners angezeigt sind. der anzeigebereich der bilder soll scrollbar sein.

wie hole ich nun die bilder in einen array? und welche art von array ist am besten geeignet? anzeigen kann ich sie, aber wie kann ich sie so anzeigen das der rest, der nicht im fenster platz hat, unten angehängt wird und man runterscrollen kann?

wäre froh um eine möglichst rasche antwort...

danke im vorraus

hansruedi
 

The_S

Top Contributor
Scrollen: JScrollPane
Anzeigen: GridLayout (3 horizontal, 0 vertikal) und darauf ein Array mit JLabels die die Bilder anzeigen (dürfte imho das einfachste sein)
Bilder in das Array: einfach in einem neuen JLabel ein ImageIcon setzen => API
 
H

hansruedi

Gast
danke für die hilfe..

und wie hole ich nun die bilder aus einem bestimmten ordner in diesen array hinein? könnt ihr mir ein beispiel geben?
versteh ich das richtig, das man zuerst alle bilder in jlabels setzt, dann ein array aus den labels und dann eine schlaufe macht die 3 labels aus dem array anzeigt, zeile für zeile!?

gruss
 

The_S

Top Contributor
So ungefähr, das einzige was du jetzt noch machen musst ist vorher auf das JPanel (bei mir pane genannt) das BorderLayout zu setzen.

Code:
String[] files = dir.list();
JLabel[] labels = new JLabel[files.length];
for (int i = 0; i < labels.length; i++) {
	labels[i] = new JLabel(new ImageIcon(files[i]));
	pane.add(labels[i]);
}

Die Variable "dir" ist vom Typ File und repräsentiert den Pfad zu dem Ordner, in welchem die Bilder liegen. Bei meinem Beispiel gehe ich davon aus, dass sich in dem Ordner ausschließlich Bilder befinden.

Ich denke aber, dass du da auch mit ein bisschen mehr Nachdenken und nachlesen in der API selber drauf gekommen wärst :bloed: :roll:
 
H

hansruedi

Gast
Vielen Dank!

Jetzt bin ich schon so weit, das es alles bilder des ordners im JScrollPane in einzelnen JLabels verkleinert anzeigt.
Ich weiss, hätte ich auch selber darauf kommen müsste, aber im moment überlege ich viel zu weit. das kommt von zu viel programmieren :p und darum bin ich froh das es noch ein forum gibt ;)

Code:
JScrollPane picArea;
picArea.setLayout(new ScrollPaneLayout());
File dir = new File("C:/Fotos/");
String[] files = dir.list();
JLabel[] labels = new JLabel[files.length];
for (int i = 0; i < labels.length; i++) {
        Image img = null;
	Image newimg = null;
	try {
	    img = new ImageIcon(ImageIO.read(new File("C:/Fotos/"+files[i]))).getImage();
	} catch (IOException e) {
	    e.printStackTrace();
	}
	int wNew = 150, hNew = 100;
	newimg = img.getScaledInstance(wNew, hNew, Image.SCALE_SMOOTH);
	labels[i] = new JLabel(new ImageIcon(newimg));
	picArea.setViewportView(labels[i]);
}

das problem jetzt ist, das es alle labels übereinander einfügt, das heisst ich seh nur das letzte label im vordergrund. welches layout muss ich dem JScrollPane (picArea) zuordnen? oder muss ich die einzelnen labels vorher in etwas anderes einfügen? und wie erreiche ich jetzt die darstellung von 3 bildern nebeneinander und der rest nach unten?

und noch eine frage: bei der for-schleife bei labels.length, ergibt es die zahl 5. ich habe aber nur 4 fotos. die 5. datei ist die systemdatei "thumbs.db". also müsste ich eigentlich noch -1 rechnen. aber wenn dann diese datei nicht vorhanden ist wird ein foto weniger angezeigt und dann ists wieder falsch. gibt es einen filter oder sowas der nur jpg, png und gif anzeigen lässt?


gruss
 

The_S

Top Contributor
Versuchs so mal

Code:
JPanel pane = new JPanel();
pane.setLayout(new GridLayout(0, 3));
String[] files = dir.list(); 
JLabel[] labels = new JLabel[files.length]; 
int wNew = 150, hNew = 100; 
BufferedImage img = null; 
Image newimg = null; 
for (int i = 0; i < labels.length; i++) { 
   try { 
       img = ImageIO.read(new File("C:/Fotos/"+files[i])); 
   } catch (IOException e) { 
       e.printStackTrace(); 
   } 
   newimg = img.getScaledInstance(wNew, hNew, Image.SCALE_SMOOTH); 
   labels[i] = new JLabel(new ImageIcon(newimg)); 
} 
this.add(new JScrollPane(pane));

[edit] ja du kannst Filtern. Schau dir dazu mal die Klasse FileFilter an :)
 
H

hansruedi

Gast
vielen dank! echt super!

es zeigt mir wie gewünscht die bilder in 3 spalten an. doch ein paar fragen habe ich trotzdem noch:

wie kann ich machen, dass es zwischen den bilder (horizontal und vertikal) einen kleinen abstand gibt? sie werden nämlich ganz aneinander angezeigt... gibt es zum beispiel beim JLabel einen innen-abstand den man angeben kann?

nun habe ich bei dem JScrollPane noch folgendes hinzugefügt: (pane ist das panel und enthält die labels mit den bildern)

Code:
picArea = new JScrollPane(pane);
ScrollPaneLayout sl1 = new ScrollPaneLayout();
sl1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
picArea.setLayout(sl1);

Dies funktioniert aber nicht ganz wie gewünscht, so werden die bilder, die sich nicht mehr im sichtbaren bereich befinden einfach abgeschnitten und es erscheint keine scrollbar. was habe ich falsch gemacht?

gruss
 

The_S

Top Contributor
hansruedi hat gesagt.:
wie kann ich machen, dass es zwischen den bilder (horizontal und vertikal) einen kleinen abstand gibt? sie werden nämlich ganz aneinander angezeigt... gibt es zum beispiel beim JLabel einen innen-abstand den man angeben kann?

Du kannst dem BorderLayout noch zwei weitere Integer mitgeben. Dadurch gibst du den horizontalen bzw. vertikalen abstand in Pixeln an.

hansruedi hat gesagt.:
Code:
ScrollPaneLayout sl1 = new ScrollPaneLayout();
sl1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
picArea.setLayout(sl1);

Das kannste dir schenken. Normalerwieße sollte dein Scrollpane scrollen können, ohne dass du ihm expliziet ein ScrollPaneLayout zuweist. Genauso wie der Standardwert für die Vertikale und die Horizontale Scrollbars auf AS_NEEDED stehen.

Eigentlich solltest du nichts weiter machen müssen um das ganze scrollbar zu machen ???:L
 
H

hansruedi

Gast
Vielen vielen dank ich hab alles hingebracht soweit. danke ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
T Wie kann man in java aufwendige grafiken programmieren AWT, Swing, JavaFX & SWT 1
SchmidiMC 2D-Grafik Grafiken werden nicht gezeichnet AWT, Swing, JavaFX & SWT 2
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Überdeckung von Grafiken AWT, Swing, JavaFX & SWT 1
A Array von JLabel mit Grafiken anzeigen AWT, Swing, JavaFX & SWT 3
J Diverse Grafiken in JPanel anzeigen und zoomen AWT, Swing, JavaFX & SWT 3
D Grafiken an Maus anhängen AWT, Swing, JavaFX & SWT 2
G Welcher Teil der Java Standard Edition API ist für das Zeichnen von einfachen Grafiken gedacht? AWT, Swing, JavaFX & SWT 3
Luk10 2D Grafiken in Java AWT, Swing, JavaFX & SWT 3
T Auswahl in GUI-Builder mit Grafiken ausstatten AWT, Swing, JavaFX & SWT 4
B Grafiken in JLabel mittels html AWT, Swing, JavaFX & SWT 5
B Java Grafiken an bestimmter Positon des Panels anzeigen AWT, Swing, JavaFX & SWT 6
D Wie mehrere Grafiken auf JPanel anzeigen lassen? (Observer pattern?) AWT, Swing, JavaFX & SWT 24
G Label auf Panel auf Panel mit Grafiken als Hintergrund (awt) AWT, Swing, JavaFX & SWT 7
D JScrollPane mit Grafiken scrollen lassen AWT, Swing, JavaFX & SWT 2
H Grafiken mittels Hashing vergleichen. aber wie? AWT, Swing, JavaFX & SWT 20
A Überlagernde Grafiken AWT, Swing, JavaFX & SWT 5
S Wie verhalten sich transparente Grafiken? AWT, Swing, JavaFX & SWT 5
K Grafiken werden nicht richtig angezeigt. AWT, Swing, JavaFX & SWT 2
A Wo sind die Grafiken für JTree ? AWT, Swing, JavaFX & SWT 3
N in Frame Grafiken zeichnen und gleichz. Buttons haben? AWT, Swing, JavaFX & SWT 2
G Grafiken in Buttons AWT, Swing, JavaFX & SWT 6
S AWT Drucken aus bestimmtem Papierfach AWT, Swing, JavaFX & SWT 7
C Image in bestimmtem Bereich anzeigen AWT, Swing, JavaFX & SWT 3
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
T src ordner erstellen AWT, Swing, JavaFX & SWT 6
izoards Ordner Rekursiv kopieren - Fortschritt? AWT, Swing, JavaFX & SWT 5
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
VPChief Eclipse: Projekt mit src ordner exportieren. AWT, Swing, JavaFX & SWT 76
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
Meeresgott AWT JFileChooser bestimmte Ordner anzeigen AWT, Swing, JavaFX & SWT 16
S Swing JFileChooser best. Ordner wie Dateien behandeln AWT, Swing, JavaFX & SWT 4
M Kamerabilder in ein Ordner speichern AWT, Swing, JavaFX & SWT 12
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
T Image aus "nicht-src-ordner" AWT, Swing, JavaFX & SWT 5
M Einzelne Ordner im JFileChooser ausgrauen? AWT, Swing, JavaFX & SWT 4
S Swing Ordner im JFileChooser auswählen AWT, Swing, JavaFX & SWT 2
MiMa Dateien aus Ordner in einer JList Ausgeben AWT, Swing, JavaFX & SWT 32
S JFileChooser öffnet den falschen Ordner AWT, Swing, JavaFX & SWT 4
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
D Applet FTP Ordner kopieren AWT, Swing, JavaFX & SWT 3
S Ordner mit Bildern laden AWT, Swing, JavaFX & SWT 2
J alle Ordner in einem Ordner anzeigen(Jlist) AWT, Swing, JavaFX & SWT 44
T Ordner öffnen nach Klick auf einen Button AWT, Swing, JavaFX & SWT 3
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
C Swing Mit jTree ein Ordneröffnen Dialog machen? Und Ordner Inhalt auslesen? AWT, Swing, JavaFX & SWT 4
brainray JFileChooser - es sollen nur Ordner wählbar sein AWT, Swing, JavaFX & SWT 2
M Swing JFileChooser und versteckte Ordner AWT, Swing, JavaFX & SWT 2
G JFile Chooser "Buttons" wie Neuen Ordner erstellen AWT, Swing, JavaFX & SWT 3
S [ANT] jsch jar aus einem anderen Ordner laden AWT, Swing, JavaFX & SWT 7
G 2 Ordner namens org einbinden müssen AWT, Swing, JavaFX & SWT 18
E Duch jFileChooser oä. einen Ordner Pfad angeben AWT, Swing, JavaFX & SWT 3
G Ordner schließen AWT, Swing, JavaFX & SWT 2
J Ordner öffnen mit JFileChooser AWT, Swing, JavaFX & SWT 2
M Datein ordner öffnen AWT, Swing, JavaFX & SWT 2
S JFileChooser // Neuer Ordner anlegen deaktiviert! AWT, Swing, JavaFX & SWT 2
R JTree Ordner anstatt Blatt anzeigen AWT, Swing, JavaFX & SWT 14
S Mit JFilechooser kompletten Ordner auslesen? AWT, Swing, JavaFX & SWT 5
J Tree nur mit Ordner anzeigen? AWT, Swing, JavaFX & SWT 4
S Ordner vor Dateiumbenennung überprüfen AWT, Swing, JavaFX & SWT 9
G JTree: Ordner erstellen AWT, Swing, JavaFX & SWT 3
B jtree mit files und ordner AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben