Label mit setText geschriebener Text wird nicht angezeigt

Status
Nicht offen für weitere Antworten.

BigBoss

Aktives Mitglied
hi
Ich schreib gerade an einem Programm wo ein Login den Benutzernamen und Passwort abfragt. Diese daten hohlt sich dann der aufrufende JFrame über eine get Methode von der Loginklasse(JDialog). Wenn ich dann z.B. den Benutzernamen auf dem JFrame in ein Lable schreibe wird dieser zwar dort reingeschrieben und ich kann ihn mir auch mti getText ausgeben lassen aber er wird nicht angezeigt.
Ich hab irgendwie den Verdacht das ich dem Fenster sagen muss das sich was geändert hat und das er es doch bitte neu zeichenen soll aber ich hab echt kein plan wie ich das schreiben soll und ich hab bis jetzt irgendwie nix dazu gefunden was mich weiter gebraucht hat.

Gruß BB
 

kleiner_held

Top Contributor
JLabels aktualisieren sich automatisch. Bist du dir sicher, das dein JLabel ueberhaupt angezeigt wird (einem JPanel oder aehnlichem hinzugefuegt wurde)?
 
S

SlaterB

Gast
meist ist da das Problem ein anderes. z.B. dass du zwar ein Label-Objekt änderst,
aber ein ganz anderes in der GUI eingebunden ist

--------

verwende mal zur Label-Erstellung NUR dieses statische Operaion:

Code:
static int count =0;
static JLabel createLabel() {
  count++;
  new JLabel("count: "+count);  
}
und schaue dir dann später an ob du genau das Label änderst was auch angezeigt wird
(getText() auslesen und ausgeben)
 

André Uhres

Top Contributor
Hier noch ein paar Stichwörter die u.U. auch helfen könnten: validate(), revalidate(), repaint(), SwingUtilities.invokeLater()
Ohne Code kann man schwer sagen, was das Problem verursacht.
 

BigBoss

Aktives Mitglied
Ich bin mir ganz sicher das es das richtige Label ist und das es auch angezeigt wird.
wenn ich z.B. über einen Button die setText Methode aufrufe wird der Text ins label geschrieben.
Hier der Text der Klasse der den Text des Labels setzt:
Code:
private void changeTable()
    {
        sqlquery = "SELECT p.tablename FROM post_ini p WHERE p.username = \"" + "user" + "\";";
        result = dbv1.ExecQ(sqlquery);
        try
        {
           while(result.next())
           {
               currentTables.put("incoming",result.getString("tablename") + "_ein_" + jahr);
               currentTables.put("outgoing",result.getString("tablename") + "_aus_" + jahr);
           }//ende while
           lblcurrenttable.setText("Ihre aktuellen Tabellen: " + currentTables.get("incoming") + "," + currentTables.get("outgoing"));
           System.out.println(lblcurrenttable.getText());
        }
        catch(SQLException sqle)
        {
           sqle.printStackTrace();
        }
    }


die Ausgabe ist:

init:
deps-jar:
compile:
run:
SELECT p.tablename FROM post_ini p WHERE p.username = "user";
Ihre aktuellen Tabellen: user_ein_2007,user_aus_2007

und das label bleibt leer
Gruß BB
 

BigBoss

Aktives Mitglied
und hier noch falls es helfen sollte die anderen Methoden die erst aufgerufen werden
Code:
 private void login(loginDialog ld)
    {
        ld = new loginDialog(new java.awt.Frame(), ldap, "Titel", true);
        ld.setVisible(true);
        try
        {
           this.userProps = ldap.login(ld.getUsername(),ld.getPassword(),ld.getContext(),"Group");
           System.out.println(userProps);
           userProps.put("username",ld.getUsername());
           if(userProps.get("isMemberOfGroup").toString().equals("false"))
           {
               JOptionPane.showConfirmDialog(new java.awt.Frame(),"Sie sind nicht berechtig dieses Programm zu benutzen bitte wenden Sie ich an einen Administrator.","Title",JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE,null);
               System.exit(0);
           }
           dbv1.Open("192.168.0.1","3306","DB","user","pw",0);
           changeYear(jahr);
           changeTable();
        }   
        catch(NoVaildUserException nvu)
        {
            JOptionPane.showConfirmDialog(new java.awt.Frame(),"Der Eingegbene Benutzer wurde nicht gefunden. Bitte überprüfen Sie die Rechtschreibung!","Titel",JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE,null);
            ldap.clear();
            login(ld);
        }
        catch(AuthenticationException AE)
        {
            faildlogon++;
            if(faildlogon!=3)
            {
                JOptionPane.showConfirmDialog(new java.awt.Frame(),"Benutzername oder Passwort falsch!","Titel",JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE,null);
                ldap.clear();
                login(ld);
            }
            else
            {
                JOptionPane.showConfirmDialog(new java.awt.Frame(),"Sie haben Ihren Benutzernamen oder Ihr Passwort 3 mal flasch eingegeben. Falls Sie Ihr Passwort oder ihren Benutzernamen nicht mehr kennen wenden Sie sich bitte an einen Administrator!","Titel",JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE,null);
                System.exit(0);
            }
            
        }
        catch(NamingException ne)
        {
            ne.printStackTrace();
        }
    }

Code:
public void showMainFrame() 
    {
        java.awt.EventQueue.invokeLater(new Runnable() 
        {
            public void run() 
            {
                try
                {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                    new postMainFrame().setVisible(true);
                    ldap.checkLogin(InetAddress.getLocalHost().toString().substring(InetAddress.getLocalHost().toString().indexOf("/")+1, InetAddress.getLocalHost().toString().length()).toString());
                }
                catch(NoVaildUserException nvue)
                {
                    login(ld);
                }
                catch(UnknownHostException uhe)
                {
                    JOptionPane.showConfirmDialog(new java.awt.Frame(),"Der angegebene LDAP-Server wurde nicht gefunden bitte wenden Sie ich an einen Administrator.","Titel",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null);
                }
                catch(NamingException ne)
                {
                    ne.printStackTrace();
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
        });
    }
Und hier noch der konstruktor und Klassen Vars:
Code:
private String Version = "6.0b";
    private Date date = new Date();													//Neue Instanz von Date
    private DateFormat df = new SimpleDateFormat ("dd.MM.yyyy", Locale.GERMANY);	//definieren des Datumsformates
    private DateFormat year = new SimpleDateFormat ("yyyy", Locale.GERMANY);            //definieren des Datumsformates
    private DateFormat tf = new SimpleDateFormat ("HH:mm:ss", Locale.GERMANY);		//definieren des Zeitformates
    private String jahr = year.format(date);
    private int debug=1;
    private HashMap currentTables = new HashMap();
    private String username;
    private String context;
    private String sqlquery;
    private ResultSet result;
    private MySQL dbv1 = new MySQL();
    private HashMap userProps;
    private loginDialog ld=null;
    private Ldap ldap =null;
    private int faildlogon=0;
    private ArrayList servers = new ArrayList();
    {
        servers.add("ldapserver:389");
        servers.add("ldapserver1:389");
        servers.add("ldapserver2:389");        
    }

public postMainFrame() 
    {
        try
        {
            ldap = new Ldap(servers);
        }
        catch(NoServerAviableException NSAE)
        {
            JOptionPane.showConfirmDialog(new java.awt.Frame(),"Es wurde kein LDAP Server gefunden. Bitte wenden Sie sich an einen Administrator!","Titel",JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE,null);
            System.exit(0);
        }
        initComponents();
        this.setTitle("Titel(Version "+ Version +") - " + df.format(date));
        changeYear(jahr);
    }

Hoffe es ist halbwegs übersichtlich
Gruß BB
 

kleiner_held

Top Contributor
Ehrlich gesagt ist es ueberhaupt nicht uebersichtlich, wenn der code zerstueckelt ist und Konventionen wie "Klassennamen werden gross geschrieben) nicht eingehalten werden.

Ich vermute mal deine ganzen Auszuege sind Teil der Klasse postMainFrame die von JFrame erbt?
Dann ist die Methode showMainFrame() wahrscheinlich falsch, da du in der Methode nicht das aktuelle postMainFrame in dem Du deinen Login-Vorgang durchfuehrst anzeigst, sondern mittels:
Code:
new postMainFrame().setVisible(true);
ein anderes postMainFrame. Damit kommen natuerlich Aenderungen nie in der GUI an, weil Du 2 komplett unterschiedliche postMainFrame-Objekte fuer Anzeige und Loginvorgang benutzt.
 

BigBoss

Aktives Mitglied
hi,

Danke für die Hilfe das ist es gewesen.
Im nachhinein auch ziemlich logisch ^^

aber das ergibt bei mir wieder ein neues(altes) Problem
und zwar das wesegen ich das so gebaut hatte
Es sieht ziemlich blöd aus wenn eine loginmaske da ist ohne hauptfenster.
Hat jemand eine idee wie ich den aufruf der loginmaske so verzögern kann bis das hauptfenster da ist ohne die prozedur in das main zu schreiben?

und gleich noch ein anderes problem:

Code:
    public chooseTable(java.awt.Frame parent, HashMap props, MySQL dbv1, String Jahr, boolean modal)
    {
        super(parent, modal);
        initComponents();
        try
        {
            sqlquery = "show tables FROM post like \"%" + Jahr + "\";";
            ResultSet result = dbv1.ExecQ(sqlquery);
            while(result.next())
            { 
                aviableTables.add(result.getString(1));
            }//ende while
            sqlquery  = "SELECT * FROM post_ini WHERE username=\"" + props.get("username") + "\";";
            result = dbv1.ExecQ(sqlquery);
            result.next();
            String tid = result.getString("tableid");
            ArrayList tableids = new ArrayList();
            tid = "," + tid;
            while (tid.contains(","))
            {
                tableids.add(tid.substring(tid.lastIndexOf(",")+1));
                tid = tid.substring(0,tid.lastIndexOf(","));
            }
            sqlquery = "SELECT o.tablename FROM post_offices o WHERE";
            for(int i =0;i<tableids.size();i++)
            {
                sqlquery = sqlquery + " o.id=" + tableids.get(i) ;
                if(i != tableids.size()-1)
                {
                    sqlquery = sqlquery  + " OR";    
                }
                else
                {
                    sqlquery = sqlquery  + ";";
                }
            }
            result = dbv1.ExecQ(sqlquery);
            while(result.next())
            {
                for(int i=0;i<aviableTables.size();i++)
                {
                    if(aviableTables.get(i).toString().contains(result.getString("tablename") + "_ein"))
                    {
                        cbotables.addItem(result.getString("tablename"));
                    }
                }
            }//ende while
            if(tableids.size()>1)
            {
                //this.dispose();
            }
            else
            {
                if(tableids.size()==0)
                {
                    this.dispose();
                }
                else
                {
                    System.out.println("weg");
                    this.dispose();
                }//ende if
            }//ende if
        }
        catch(SQLException sqle)
        {
            sqle.printStackTrace();
        }//ende try/catch
    }
das ist der konstruktor eines dialoges.
wenn ich hier this.dispose(); aufrufe passiert rein garnix.
Kann ich das fenster wärend der Konstruktor durchlaufen wird nicht schließen?
es werden keine exceptions geworfen.
Ich kann den Dialog aber mit einem button der this.dispose(); aufruft danach schließen.

Gruß & thx BB
 

André Uhres

Top Contributor
Es sieht ziemlich blöd aus wenn eine loginmaske da ist ohne hauptfenster.
Das empfinde ich zwar nicht unbedingt so, aber du kannst mit "setVisible(true)" den Frame jederzeit sichtbar machen.
Kann ich das fenster wärend der Konstruktor durchlaufen wird nicht schließen?
Doch, so:
Code:
       SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                dispose();
            }
        });
 

BigBoss

Aktives Mitglied
Danke für deine Antwort

Hat alles gepasst manchmal ist der einfachste weg viel zu einfach um entdeckt zu werden ^^

Gruß BB
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
zhermann NullPointerException bei Label.setText() AWT, Swing, JavaFX & SWT 5
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
Juelin Text und Backgroundcolor im Label geht nicht AWT, Swing, JavaFX & SWT 7
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
izoards Ausdruck auf Label Drucker AWT, Swing, JavaFX & SWT 1
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
I BoxLayout zentriert Label nicht AWT, Swing, JavaFX & SWT 7
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
R JavaFX Label oder Imageview anzeigen mit Buttonklick AWT, Swing, JavaFX & SWT 4
L Label im JavaFX Thread Updaten AWT, Swing, JavaFX & SWT 3
A Inhalt wechseln bei Klick auf Label AWT, Swing, JavaFX & SWT 8
ralfb1105 JavaFX Label lässt sich innerhalb service Task nicht updaten? AWT, Swing, JavaFX & SWT 22
Trèfle JavaFX Formattierung im Label AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
F Countdown in Label anzeigen AWT, Swing, JavaFX & SWT 14
H JavaFX - Label aktualisieren AWT, Swing, JavaFX & SWT 1
J Dateiname im Label einblenden AWT, Swing, JavaFX & SWT 4
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
T JavaFX Label mit mehreren Images AWT, Swing, JavaFX & SWT 11
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
L JavaFX ContextMenu bei Label mit Linksklick AWT, Swing, JavaFX & SWT 4
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
N Anordnung der Label AWT, Swing, JavaFX & SWT 3
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
D JavaFX Label lässt sich nicht mehrmals färben AWT, Swing, JavaFX & SWT 7
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
T CSS Rechtsbüdniges Label mit Zwei Zeilen AWT, Swing, JavaFX & SWT 7
J JavaFX Translation Text/Label AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
C Textfeld und Label werden nicht angezeigt (Ubuntu) AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
Augenblau JavaFX Wechselnde Werte in Label darstellen AWT, Swing, JavaFX & SWT 7
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
B Swing JXMapKit Mausemove in Label anzeigen AWT, Swing, JavaFX & SWT 0
K Bild in Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
G Label wird nicht erstellt AWT, Swing, JavaFX & SWT 0
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
G Label erstellen AWT, Swing, JavaFX & SWT 6
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
F JavaFX label.getWidth() AWT, Swing, JavaFX & SWT 2
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
N Input/Output Stream werte in Label anzeigen. AWT, Swing, JavaFX & SWT 6
R JavaFX Label ändern in aufgerufener AnchorPane AWT, Swing, JavaFX & SWT 3
G JavaFX CSS: Label in GridPane rechts ausrichten AWT, Swing, JavaFX & SWT 9
T Swing Aktuelle Größe eines Textes in einem Label darstellen AWT, Swing, JavaFX & SWT 3
KrokoDiehl Swing Buchstaben im Label anders färben AWT, Swing, JavaFX & SWT 4
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
P Label rotieren mit Timer AWT, Swing, JavaFX & SWT 5
C Label wird nicht an der richtigen Position angezeigt.. AWT, Swing, JavaFX & SWT 7
H Label mit Icon positionieren AWT, Swing, JavaFX & SWT 14
E Netbeans: Buttons mit Label bzw. Rahmen unterlegen AWT, Swing, JavaFX & SWT 8
J resize - Label bleibt erst schwarz AWT, Swing, JavaFX & SWT 4
T label überschriebt seine werte-SWT AWT, Swing, JavaFX & SWT 3
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
N Label auf Hauptfenster manipulieren AWT, Swing, JavaFX & SWT 2
S VAADIN: Problem mit Label AWT, Swing, JavaFX & SWT 18
P Ausgabe Label AWT, Swing, JavaFX & SWT 6
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
S ImageIcon von Label entfernen AWT, Swing, JavaFX & SWT 9
B Label breite ermitteln vor dem rendern? AWT, Swing, JavaFX & SWT 7
A Bekomme das Label nicht in die Mitte von Reihe AWT, Swing, JavaFX & SWT 7
H SWT Markierbares Label AWT, Swing, JavaFX & SWT 8
A Swing Box Label ausrichten AWT, Swing, JavaFX & SWT 3
R Label in den Vordergrund einblenden AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
O Swing Label(bzw. Grafik) verdekt von anderm Label AWT, Swing, JavaFX & SWT 2
A TextField und Label AWT, Swing, JavaFX & SWT 8
L Label dynamisch awt AWT, Swing, JavaFX & SWT 2
J Label mit transparentem hintergrund - geht das? AWT, Swing, JavaFX & SWT 21
B Die Werte von getLocation() im Label anzeigen AWT, Swing, JavaFX & SWT 4
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Label Hintergrundbild mit Text AWT, Swing, JavaFX & SWT 6
A SWT - Farbe von Text auf Label ändern AWT, Swing, JavaFX & SWT 2
M gridbaglayout - abstand bei label und field AWT, Swing, JavaFX & SWT 8
hdi SWT Label Text vertikal zentrieren AWT, Swing, JavaFX & SWT 6
T In einem Label scrollen AWT, Swing, JavaFX & SWT 3
Spot84 swt label zeilenumbruch will nicht funktionieren AWT, Swing, JavaFX & SWT 1
L JFreeChar Label für StackedBar AWT, Swing, JavaFX & SWT 3
lumo SWT Label - onResize? AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben