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...
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
}