Ich habe drei Probleme mit meiner JList. Damit ich nicht jedesmal einen eigenen Thread aufmachen muss, schreib ich hier meine
1. Problem
Ich habe folgenden Handler:
Wenn ich jetzt Fall-Nummer auswähle, werden die Fallnummern richtig in der Liste angezeigt. Wähle ich jetzt Nachname aus, werden die Nachnamen UND die Fall-Nummern angezeigt. Ich möchte natürlich nur die Nachnamen in der Liste haben. Was mach ich da falsch?
2. Problem
Wenn ich jetzt ein Kriterium auswähle und das Ergebnis in der Liste angezeigt wird, "verschwindet" ein Teil der GUI. Schließe ich das Fenster und starte es neu, wird wieder die komplette GUI angezeigt. Wie kann ich das "verschwinden" von Teilen de GUI verhindern?
3. Problem
Bei einer anderen JList habe ich folgendes Problem:
Diese JList wird nur angezeigt, wenn ein bestimmter Button gedrückt wird. Beim 1. Klick funzt es noch wunderbar, beim 2. Klick werden die Ergebnisse des 1. Klicks auch mit angezeigt. Wie kann ich das verhindern?
1. Problem
Ich habe folgenden Handler:
Code:
class listeSortierenListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String text = "Welches Kriterium soll in der Liste angezeigt werden?";
stringSort = ( String ) JOptionPane.showInputDialog(null, "Kriterium für Liste", "Dialog", JOptionPane.QUESTION_MESSAGE, new ImageIcon("img/middle.gif"), sortierung, sortierung[0]);
String stringSortWert = stringSort;
if (stringSortWert.equals("Name"))
{
kriterium = "nachname";
liste.updateUI();
scrollPane.setViewportView(liste);
try
{
String lese_nachname = "Select * from anwender";
Statement stmt_nachname = Login.connection.createStatement();
ResultSet result_nachname = stmt_nachname.executeQuery(lese_nachname.toString());
// Anzeige neuer DS in der Liste
for (;result_nachname.next();defaultlistmodel.addElement(anzeige_JList))
{
anzeige_JList = result_nachname.getString(kriterium);
}
pack();
stmt_nachname.close();
}
catch(SQLException a)
{
JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e,
"DB-Meldung", JOptionPane.ERROR_MESSAGE);
}
liste.addListSelectionListener(new SelectionHandler_Nachname());
}
if (stringSortWert.equals("Fall-Nummer"));
{
kriterium = "fall_nummer";
liste.updateUI();
scrollPane.setViewportView(liste);
try
{
String lese_fallnummer = "Select * from anwender";
Statement stmt_fallnummer = Login.connection.createStatement();
ResultSet result_fallnummer = stmt_fallnummer.executeQuery(lese_fallnummer.toString());
// Anzeige neuer DS in der Liste
for (;result_fallnummer.next();defaultlistmodel.addElement(anzeige_JList))
{
anzeige_JList = result_fallnummer.getString(kriterium);
}
pack();
stmt_fallnummer.close();
}
catch(SQLException a)
{
JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e,
"DB-Meldung", JOptionPane.ERROR_MESSAGE);
}
liste.addListSelectionListener(new SelectionHandler_FallNummer());
}
}
}
Wenn ich jetzt Fall-Nummer auswähle, werden die Fallnummern richtig in der Liste angezeigt. Wähle ich jetzt Nachname aus, werden die Nachnamen UND die Fall-Nummern angezeigt. Ich möchte natürlich nur die Nachnamen in der Liste haben. Was mach ich da falsch?
2. Problem
Wenn ich jetzt ein Kriterium auswähle und das Ergebnis in der Liste angezeigt wird, "verschwindet" ein Teil der GUI. Schließe ich das Fenster und starte es neu, wird wieder die komplette GUI angezeigt. Wie kann ich das "verschwinden" von Teilen de GUI verhindern?
3. Problem
Bei einer anderen JList habe ich folgendes Problem:
Code:
/*-------------------------------------------------------------------*/
/**J L i s t */
/*-------------------------------------------------------------------*/
String[] liste_dokumentationen_s = {"anzahl_dokumentationen", "fall_nummer"};
liste_dokumentation = new JList(defaultlistmodel_weitereDokumentationen);
liste_dokumentation.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
liste_dokumentation.setSelectedIndex(0);
liste_dokumentation.setSize(50,50);
liste_dokumentation.setSelectionMode(0);
doku_scrollPane = new JScrollPane(liste_dokumentation);
doku_scrollPane.setViewportView(liste_dokumentation);
/*-------------------------------------------------------------------*/
/**JList mit Werten aus der Datenbank auslesen*/
/*-------------------------------------------------------------------*/
int a = Fragebogen.patienten_liste.getSelectedIndex();
String b = Fragebogen.fall_nummer_text.getText();
try
{
String query_wDoku = "SELECT * FROM dokumentation where dokumentation_fall_nummer = " + "'" + b + "'";
// Statement erzeugen
Statement wDoku_st = Login.connection.createStatement();
// Query ausführen
ResultSet wDoku_rs = wDoku_st.executeQuery(query_wDoku);
//Daten einlesen und auf dem Bildschirm ausgeben
while (wDoku_rs.next())
{
String anzeige_anzahl_dokumentation_JList;
anzeige_anzahl_dokumentation_JList = wDoku_rs.getString("anzahl_dokumentation");
defaultlistmodel_weitereDokumentationen.addElement(anzeige_anzahl_dokumentation_JList);
}
wDoku_st.close();
}
catch(SQLException d1)
{
JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau " + d1,
"DB-Meldung", JOptionPane.ERROR_MESSAGE);
}
liste_dokumentation.addListSelectionListener(new SelectionHandler3());
cp.add(doku_scrollPane);
Diese JList wird nur angezeigt, wenn ein bestimmter Button gedrückt wird. Beim 1. Klick funzt es noch wunderbar, beim 2. Klick werden die Ergebnisse des 1. Klicks auch mit angezeigt. Wie kann ich das verhindern?