Zum Inhalt springen

Problem mit der JList


Alex_winf01

Empfohlene Beiträge

Ich habe folgende Liste:

/*-------------------------------------------------------------------*/

      /**J L i s t */

      /*-------------------------------------------------------------------*/

      String[] liste_array = {"nachname , ", "vorname,", "fall_nummer"};

      liste = new JList(defaultlistmodel);

      liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

      liste.setSelectedIndex(0);

      liste.setSize(50,50);

      liste.setSelectionMode(0);

      scrollPane = new JScrollPane(liste);
Diese fülle ich mit Werten aus der Datenbank:
/*-------------------------------------------------------------------*/

      /**JList mit Werten aus der Datenbank auslesen*/

      /*-------------------------------------------------------------------*/

      try

       {

          // Anzeige neuer Datensätze in der Liste

          String anzeige_JList;

          for (;Login.result.next();defaultlistmodel.addElement(anzeige_JList))

          {

             anzeige_JList = Login.result.getString("fall_nummer");

          }


          pack();


                 }

       catch(SQLException e)

       {

          JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e,

                     "DB-Meldung", JOptionPane.ERROR_MESSAGE);

       }
Nun habe ich eine Schaltfläche, mit der ich erreichen will, dass nicht die fall_nummer, sondern der Name oder der Status aus der DB ausgelesen wird. Hier der ActionListener dazu:
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]);

            if (stringSort == null) return;

         }

      }
Die Variable sortierung ist wie folgt definiert:
public static String[] sortierung = {"Fall-Nummer", "Name", "Status"};
Ich muss ja dann die JList z. B. mit dem hier überschreiben:
/*-------------------------------------------------------------------*/

      /**JList mit Werten aus der Datenbank auslesen*/

      /*-------------------------------------------------------------------*/

      try

       {

          // Anzeige neuer Datensätze in der Liste

          String anzeige_JList;

          for (;Login.result.next();defaultlistmodel.addElement(anzeige_JList))

          {

             anzeige_JList = Login.result.getString("name");

          }


          pack();


                 }

       catch(SQLException e)

       {

          JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e,

                     "DB-Meldung", JOptionPane.ERROR_MESSAGE);

       }

Nur mal angenommen, der Anwender klickt auf "Name". Nur leider tut sich da nix. Wer kann mir helfen? Und wenn es über ein kleines Beispiel ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ Jaraz

Danke schon mal für Deine Antwort. Ich habe festgestellt, dass ich das Array gar nicht verwende, sondern gleich über

liste = new JList(defaultlistmodel);
Habe das Problem jetzt anders gelöst. Man nehme eine Variable, die man als public deklarier (z. B. public static String kriterium;) Setze diese Standard-mäßig auf nummer und sobald der Anwender über die Schaltfläche "Neues Kriterium" klickt und ein Kriterium festlegt (z. B. Name) wird das in der Variablen kriterium gespeichert. Fertig. Funzt Nun habe ich nur noch ein "kleines" Problem: Ich habe da einen Handler für die Liste, der ja die Problematik lösen soll, wie die Liste reagieren soll. Derzeit sieht mein Listener so aus:
/*------------------------------------------------------------*/

		/* Handler für die JList*/

		/*------------------------------------------------------------*/

		class SelectionHandler implements ListSelectionListener

		{

			public void valueChanged(ListSelectionEvent e)

			{

				if (e.getSource() == liste)

				{

					// Methodenaufrufe, wie die Liste reagieren soll

					for (int i = 0; i< 100; i++)

					{

						String index = (String)liste.getSelectedValue();

						if (liste.getSelectedIndex()==i)

						{

							/*------------------------------------------------*/

							/* Daten auslesen*/

							/*------------------------------------------------*/

							String query_daten = "SELECT * FROM tabelle where nummer" + "=" + "'" + index + "'";


							try

							{

								// Statement erzeugen

								Statement statement = Login.connection.createStatement();


								// Query ausführen

								ResultSet result = statement.executeQuery(query_daten);


								//Daten einlesen und auf dem Bildschirm ausgeben

								while (result.next())

								{

									if(patient_rs.getString(kriterium).equals(index))

									{	

										// Hier werden die Daten dann auf den Bildschirm gesetz (z. B. in ein Textfeld mit setText();


									}

								}

							statement.close();

						}

						catch(SQLException e2)

						{

							JOptionPane.showMessageDialog(null, "Fehler beim Auslesen" + e2,

							"DB-Meldung", JOptionPane.ERROR_MESSAGE);

						}

Nun habe ich folgendes "Problem": Wie ich ja geschrieben habe, kann der Anwender einmal das Kriterium "Nummer" auswählen und einmal das Kriterium "Name". Das klappt mit einem Listener nicht. Wie kann ich dieses Problem lösen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...