Swing jButton Text verschwindet

mirisbowring

Bekanntes Mitglied
Guten Abend,
ich habe einen Button, der seinen Text ändert, wenn ich etwas in einer JList auswähle.
Nun habe ich das Problem, dass der Text verschwindet, wenn ich auf den Button drücke, und das Event erst bei zweiten Klick geschieht.
Der bevor ich den Text das erste Mal ändere, funktioniert alles einwandfrei...

Es handelt sich um den Button chooser...

Java:
package datenbankgui;

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.HeadlessException;
import java.awt.Image;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;


public final class Login extends javax.swing.JPanel {

    //Methode um die Verbindung zu öffnen
    Connection conn;
    static final String database = "SPORTDATABASE";
    static final String URL = "jdbc:derby:" + database;
    final String user = "APP";
    final String password = "APP";
    public void start() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
        System.out.println("Datenbanktreiber erfolgreich geladen...");
            if (new File(database).exists()) {
                    conn = DriverManager.getConnection(URL, user, password);
                    System.out.println(database + " existiert und wurde erfolgreich verbunden");
            }
            else
            {
                    DB datenbank = new DB();
            }
    }
    //Methode, um die Verbindung zu trennen   
    public void stop()
    {
        try {
            DriverManager.getConnection("jdbc:derby:" + database + ";shutdown=true");
                        System.out.println(database + " dbb Verbindung getrennt");
        } catch (final Exception ex) {
            //e.printStackTrace();
                        System.out.println(database + " dbb Verbindung getrennt...");
        }
    }
   
    mainmenupanel mp = new mainmenupanel();
    //Objekt wird erzeugt, auf dem die Systemzeit/datum ausgegeben werden.
    JLabel Systemzeit;
    JLabel Systemdatum;
    //Systemdatum wird ermittelt
    SimpleDateFormat Date = new SimpleDateFormat("dd.MM.yyyy");
    //Systemzeit wird ermittelt (HH:mm:ss|ich nehme nur HH:mm)
    SimpleDateFormat Time = new SimpleDateFormat("HH:mm");   
    //Hintergrund wird geladen
    final ImageIcon bg = new ImageIcon(getClass().getResource("/ressources/background1920x1080.png"));
    //ImageIcon wird zu einem Image konvertiert, da PaintComponent eine java.awt methode ist, und somit keine Javax.swing.ImageIcon funktion unterstützt
    Image img = bg.getImage();
    //Hintergrundbild wird 'gemalt'
    @Override
    public void paintComponent(Graphics g) {       
    g.drawImage(img, 0, 0, getWidth(), getHeight(), this);  
    }
   
    JList jlist;
    ArrayList<String> benutzer = new ArrayList<>();
    Object[] liste;
    String member;   
    JPasswordField pwf = new JPasswordField(40);
   
    public Login() {    
        try {
            start();
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException ex) {
            Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        }
        selectUser();
        initComponents();
        jList1.setVisible(false);
        jScrollPane1.hide(); 
       
    }
   
    private void selectUser(){
        Statement stmt;
        String select = "SELECT BENUTZER FROM SAFETY";
        try{
            stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(select);
            while(rs.next()){
                benutzer.add(rs.getString("BENUTZER"));
            }
            liste = new Object[benutzer.size()];
            for(int i=0; i<liste.length; i++){
                liste[i] = benutzer.get(i);
            }
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, "UserError");
        }
       
    }

   
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        chooser = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();
        jButton2 = new javax.swing.JButton();

        setPreferredSize(new java.awt.Dimension(1280, 720));
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ressources/Profile.png"))); // NOI18N
        jButton1.setBorder(null);
        jButton1.setBorderPainted(false);
        jButton1.setContentAreaFilled(false);
        jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton1.setPreferredSize(new java.awt.Dimension(130, 130));

        chooser.setBackground(new java.awt.Color(255, 255, 255));
        chooser.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        chooser.setText("Wählen Sie einen Benutzer");
        chooser.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        chooser.setPreferredSize(new java.awt.Dimension(260, 40));
        chooser.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chooserActionPerformed(evt);
            }
        });

        jList1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                jList1ValueChanged(evt);
            }
        });
        jScrollPane1.setViewportView(jList1);

        jButton2.setBackground(new java.awt.Color(255, 255, 255));
        jButton2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        jButton2.setText("Login");
        jButton2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jButton2.setPreferredSize(new java.awt.Dimension(260, 40));
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(572, 572, 572)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(510, 510, 510)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(chooser, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane1)
                    .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(510, 510, 510))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(180, 180, 180)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(chooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(91, 91, 91)
                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(177, Short.MAX_VALUE))
        );
    }// </editor-fold>                       

    private void chooserActionPerformed(java.awt.event.ActionEvent evt) {                                       
        int length = liste.length;
        int height = 0;
       
        switch(length){
            case 1: height = 30;
                break;
            case 2: height = 50;
                break;
            case 3: height = 70;
                break;
        }
        if(length >3){
            height = 90;               
        }
        jScrollPane1.setBounds(510, 368, 260, height);
        jList1.setBounds(510, 368, 260, height);
        jScrollPane1.setVisible(true);
        jList1.setListData(liste);
        jList1.setVisible(true);
        //validate();
        //repaint();
        /*jlist = new JList(benutzer.toArray());
        jlist.setBounds(510, 388, 260, 160);
        Font BEST = new Font("Tahoma", Font.PLAIN, 18);
        jlist.setFont(BEST);
        this.add(jlist);
        jlist.requestFocusInWindow();*/
       
    }                                      

    private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {                                   
        member = (String) jList1.getSelectedValue();
        chooser.setText(member);
        jList1.setVisible(false);
        jScrollPane1.setVisible(false);     
        pwf.setBounds(510, 395, 260, 40);
        add(pwf);
    }                                  

    private void formMouseClicked(java.awt.event.MouseEvent evt) {                                 
        jList1.setVisible(false);
        jScrollPane1.setVisible(false);
    }                                

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        char[] input = pwf.getPassword();
        String pass = new String(input);
        String guy = chooser.getText();
        String selpass = null;
        Statement stmt;
        String select = "SELECT PW FROM SAFETY WHERE BENUTZER = '" + guy + "'";
        try{
            stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(select);
            while(rs.next()){
                selpass = rs.getString("PW");
            }
            if(pass.equals(selpass)){
                BorderLayout borderLay = new BorderLayout();
                setLayout(borderLay);
                removeAll();
                add(mp);
                validate();
                mp.setVisible(true);
            } else {
                JOptionPane.showMessageDialog(null, "Zugriff Verweigert!");
            }
        }catch(SQLException | HeadlessException e){
            JOptionPane.showMessageDialog(null, "ProblemSelectPass");
        }
       
    }                                       


    // Variables declaration - do not modify                    
    private javax.swing.JButton chooser;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JList jList1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration                  
}
 

Enceladus271

Bekanntes Mitglied
Ich denke es liegt daran, dass du paintComponent überschrieben hast und dort nicht
Java:
super.paintComponent( g );
aufrufst.

Edit:
1. Klassennamen sollten mit einem Großbuchstaben beginnen
2. Variablennamensollten mit einem Kleinbuchstaben beginnen
3. Variablen sollten im Quellcode oben stehen, Methoden unten
 

mirisbowring

Bekanntes Mitglied
Ich denke es liegt daran, dass du paintComponent überschrieben hast und dort nicht
Java:
super.paintComponent( g );
aufrufst.

Edit:
1. Klassennamen sollten mit einem Großbuchstaben beginnen
2. Variablennamensollten mit einem Kleinbuchstaben beginnen
3. Variablen sollten im Quellcode oben stehen, Methoden unten
Super danke :)
hat funktioniert...
Den Code räume ich meistens erst auf, wenn die jeweilige Klasse funktioniert (meistens ändere ich dann noch eine Menge, da das Programm danach performanter ist).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
E JButton Text malen AWT, Swing, JavaFX & SWT 3
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
F JButton Text-Farbe bei Disabled AWT, Swing, JavaFX & SWT 2
F JButton Text-Umbruch zentriert AWT, Swing, JavaFX & SWT 5
C Swing Text eines JButton mit String definieren? Reihenfolge? AWT, Swing, JavaFX & SWT 6
Q Swing JButton Text "hineindrücken" AWT, Swing, JavaFX & SWT 5
A Text Layout beim jButton AWT, Swing, JavaFX & SWT 3
A JButton Abstand Text - Rand AWT, Swing, JavaFX & SWT 4
G JButton Mouse Over Text AWT, Swing, JavaFX & SWT 2
K Icon und Text auf JButton anordnen AWT, Swing, JavaFX & SWT 2
C JButton + Icon + Text AWT, Swing, JavaFX & SWT 3
G jButton Text zu Integer umwandeln // jLabel mit Counter auf AWT, Swing, JavaFX & SWT 16
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben