[Java] Variablen aus einer Schleife ausgeben
lima-city → Forum → Programmiersprachen → Java
all
anzeigen
backen
beitrag
catch
fehler
gel
gucken
import
label
laufwerk
layout
letzte gefundene laufwerk
main
meldung
null
root
schleifen
zugang
zuletzt
-
Ich w?rde gerne (als kleine Spielerei) alls Quelllaufwerke(Hey, ein Wrt mit 3 "l" O.O) des Recchners ausgeben lassen.
Daf?r habe ich mir bisher folgenden Code zusammengeschustert:
//imports //import java.awt.*; import javax.swing.*; import java.io.*; //----------------------- public class getRoots { public static void main(String[] args) { JFrame frame = new JFrame( "Alle roots anzeigen ;)" ); for( File file : File.listRoots() ) { try { String ready = file.exists() ? "" : "nicht"; StringBuffer back = new StringBuffer (file.getPath()); back.append( " ist " ).append( ready ).append( " bereit." ); JLabel label = new JLabel( back.toString() ); frame.getContentPane().add( label ); } catch( ArrayIndexOutOfBoundsException e) { JOptionPane.showMessageDialog( frame, "Es wurde ein Fehler festgestellt.\n Das Programm wird beendet -.-"); //GIbt im Fehlerfall eine Meldung aus. } } frame.setSize( 250, 150 ); frame.setVisible( true ); } }
allerdings wird nachher nur "D:\ ist bereit" ausgegeben, da ja nur das zuletzt aufgerufene Laufwerk in das Label geschrieben wird.
Ich will aber alle untereinander ausgeben.
Das m?sste ich dann ja auserhalb der for-Schleife machen, ich wei? allerdings nicht, wie :-/
MfG
Beitrag ge?ndert am 14.08.2006 11:26 von benutzernaemelchen
EDIT: hat sich gekl?rt, bitte closen ;)
Beitrag ge?ndert am 14.08.2006 13:29 von benutzernaemelchen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also das nur das letzte gefundene Laufwerk in das Label geschrieben wird stimmt nicht so ganz. Das zuletzt hinzugef?gte Label ?berdeckt nur alle vorherigen.
Guck dir mal folgendes an:
public static void main(String[] args) { JFrame frame = new JFrame( "Alle roots anzeigen ;)" ); //JLabel label = new JLabel( back.toString() ); //JLabel label[] = new JLabel[26]; int i=0; frame.setLayout(null); //Kein Layout verwenden for( File file : File.listRoots() ) { try { String ready = file.exists() ? "" : "nicht"; StringBuffer back = new StringBuffer (file.getPath()); back.append( " ist " ).append( ready ).append( " bereit." ); JLabel label = new JLabel(back.toString()); label.setBounds(0,i*15,200,10); //Setzt jedes Label ein St?ck weiter unter das vorherige frame.getContentPane().add(label); //label[ i ] = new JLabel(back.toString()); //label[ i ].setBounds(0,i*15,200,10); //frame.getContentPane().add(label[ i ]); frame.getContentPane().add(label); i++; } catch( ArrayIndexOutOfBoundsException e) { JOptionPane.showMessageDialog( frame, "Es wurde ein Fehler festgestellt.\n Das Programm wird beendet -.-"); //GIbt im Fehlerfall eine Meldung aus. } } frame.setSize( 250, 150 ); frame.setVisible( true ); }
Das wichtigste ist an sich, dass du die Position der Labels festsetzt. Ansonsten werden alle (falls du kein Layout verwendest) ?bereinander geklatscht.
Der auskommentierte Code w?re f?r eine L?sung mit einem Array. So h?ttest du sp?ter noch zugang zu allen Labels.
Oh sorry, hatte nicht gesehen, dass das Problem schon gel?st wurde.
Beitrag ge?ndert am 6.09.2006 17:52 von donkey -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage