Label wird nicht an der richtigen Position angezeigt..

Cedist

Mitglied
Hallo,

Ich habe hier folgendes Problem: Wie Ihr im Anhang sehen könnt, wird der Pfad des *.xls Files zu weit unten geschrieben... aber es sollte wie oben, zwischen: "xlsFile:" und dem "Browse..." Button sein...
Wenn ich ein Directory auswähle wirds richtig angezeigt, nur wenn ich ein File auswähle nicht 🙁
Bitte um Hilfe???:L

Java:
//Erstellen der Lables
        final JLabel xlstitlelabel = new JLabel("<html><u>xlsDir:</u></<html>");
        xlstitlelabel.setBounds(30, 200, 300, 30);
        
        final JLabel xlslabel = new JLabel(xlsDir);
        xlslabel.setBounds(30, 220, 500, 30);
        
        final JLabel xlsftitlelabel = new JLabel("<html><u>xlsFile:</u></<html>");
        xlsftitlelabel.setBounds(30, 200, 300, 30);
        
        final JLabel xlsflabel = new JLabel(xlsFile);
        xlsflabel.setBounds(30, 220, 500, 30);

//Hier wird entschieden, was am Anfang im GUI steht
        if(xlsFile != null){

        	panel.add(xlsftitlelabel);
        	panel.add(xlsflabel);
        }
        else{
        	panel.add(xlstitlelabel);
        	panel.add(xlslabel);
        }

//Nach der Auswahl, auf FIle oder Verzeichnis, dementsprechend anzeigen
        browse2Button.addActionListener(new ActionListener() {
        	
        	private File file;
			private String path;

            public void actionPerformed(ActionEvent ae) {
            	JFileChooser chooser = new JFileChooser(xlsDir);
            	chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
              int returnValue = chooser.showOpenDialog(null);
            if (returnValue == JFileChooser.APPROVE_OPTION) {
            	file = chooser.getSelectedFile();
        		path = file.getPath();
            	 if(path.endsWith(".xls")){
            		 System.out.println(path);
            		 xlstitlelabel.setVisible(false);
            		 xlslabel.setVisible(false);
            		 panel.add(xlsftitlelabel);
            		 panel.add(xlsflabel);
            		 xlsflabel.setText(path);
	
            	 }
            	 else{
            		 System.out.println(path);
            		 xlslabel.setText(path);
            		 
            		File directory = new File(path);
             		String[] list = directory.list();
             		int count = list.length;
             		System.out.println(count);
             		
             		xlscount.setText(String.valueOf(count));
            	 }
             }
            }
        });
attachment.php
 

Anhänge

  • Capture.JPG
    Capture.JPG
    45,4 KB · Aufrufe: 55
Wieso schwer?
Ich hatte jetzt noch nicht wirklich grosse Probleme damit, und ist auch mein 1. GUI 😉
UNd es ist natürlich nicht der ganze Code.
 
Hab ich 😉 Verstehe was du meinst, aber mag jetzt nicht alles umkremplen.

Aber kannst du mir erklären, wieso es mir richtig anzeigt wenn ich ein Directory wähle aber nicht wenn ich ein File wähle? Koordinaten etc. sind alle genau gleich angegeben, es macht mir kein Sinn???:L

UNd das nächste GUI wir ohne Layout = NULL gecodet, das versprech ich dir 😛
 
Du machst ja was anderes je nachdem ob Directory oder nicht:
Java:
if(path.endsWith(".xls")){
                     System.out.println(path);
                     xlstitlelabel.setVisible(false);
                     xlslabel.setVisible(false);
                     panel.add(xlsftitlelabel);
                     panel.add(xlsflabel);
                     xlsflabel.setText(path);
    
                 }
                 else{
                     System.out.println(path);
                     xlslabel.setText(path);
                     
                    File directory = new File(path);
                    String[] list = directory.list();
                    int count = list.length;
                    System.out.println(count);
                    
                    xlscount.setText(String.valueOf(count));
                 }
Während der Laufzeit neue Komponenten zu adden ist meistens nicht optimal. Ausserdem werden da zwei verschiedene labels "xlsflabel" und "xlslabel" neu betextet.
 
Hallo,

wenn Du ein Component (wie JLabel) einem Container (wie JPanel) hinzufügst, der schon sichtbar ist, dann musst Du validate() auf den Container anwenden. Also bei Dir:
Java:
if(path.endsWith(".xls")){
                     System.out.println(path);
                     xlstitlelabel.setVisible(false);
                     xlslabel.setVisible(false);
                     panel.add(xlsftitlelabel);
                     panel.add(xlsflabel);
                     xlsflabel.setText(path);
    
                     // und jetzt 
                     panel.validate();
                 }

vielleicht hilft das was.

Momolin
 
So habs jetzt so gmeacht, und funktioniert perfekt 🙂 Danke bERt0r für den Tipp, dass man nicht während Laufzeit adden soll 😉

Java:
if (returnValue == JFileChooser.APPROVE_OPTION) {
            	file = chooser.getSelectedFile();
        		path = file.getPath();
            	 if(path.endsWith(".xls")){
            		 System.out.println(path);
            		 xlstitlelabel.setText("xlsFile:");
            		 xlslabel.setText(path);
            		 
	
            	 }
 

Neue Themen


Zurück
Oben