Zugriff auf Elemente in JList / DefaultListModel

Hallo, habe ein Problem mit JList (Swing) bzw. dem zugehörigen DataModel.

DefaultListModel model = new DefaultListModel(); 
jThemenListe = new JList( model ); 
JScrollPane jScrollingList = new JScrollPane(jThemenListe); 
jContentPane.add(jScrollingList);

...

jThemenListe.addListSelectionListener( new ListSelectionListener(){ 
 public void valueChanged( ListSelectionEvent e ){ 
 System.out.println(jThemenListe.getSelectedIndex()); 
 System.out.println(model.getElementAt(1)); 
 } 
});

Ich komme einfach nicht an den Index eines Objektes heran.
Wenn ich über jList.getSelectedIndex() darauf zugreifen möchte bekomme ich nur -1 zurück.

model.getElementAt(1) funktioniert, aber ich will ja den Index erst auslesen, wenn es ausgewählt wurde…

In der Liste stehen etwa 40 Zeilen, Und egal was ich auswähle, es kommt immer -1 zurück. Selbst wenn ich in der Liste nur ein Objekt hätte, müsste ich doch 0 oder 1 als Index erhalten, oder? Was mache ich verkehrt?

Ich weiß nicht mehr weiter. Ist bestimmt ein ganz blöder Fehler, aber wie komme ich an den Index jeder einzelnen Zeile der JList / des Models heran?

Gruß pianoman

Moien

jThemenListe.addListSelectionListener( new
ListSelectionListener(){
public void valueChanged( ListSelectionEvent e ){
System.out.println(jThemenListe.getSelectedIndex());
System.out.println(model.getElementAt(1));
}
});

Ich komme einfach nicht an den Index eines Objektes heran.
Wenn ich über jList.getSelectedIndex() darauf zugreifen möchte
bekomme ich nur -1 zurück.

Hast du evtl. ein ListSelectionModel ausgewählt das mehrere Selektions zulässt ? (setSelectionMode & Co)

Passiert was auf dem Schirm wenn du jThemenListe.setSelectedIndex(1) machst ? (Sprich: ist das jThemenListe auch tatsächlich das was auf dem Schirm auftaucht ?)

cu

Hast du evtl. ein ListSelectionModel ausgewählt das mehrere
Selektions zulässt ? (setSelectionMode & Co)

Wie meinst Du das? Für die JList habe ich SelectionMode auf singleselect gesetzt. Muss ich das für das Model noch irgendwo extra tun?

Passiert was auf dem Schirm wenn du
jThemenListe.setSelectedIndex(1) machst ? (Sprich: ist das
jThemenListe auch tatsächlich das was auf dem Schirm auftaucht?)

Ja, dass sieht gut aus. Wenn ich jThemenListe.setSelectedIndex(2) ausführe, dann wird der 3. Eintrag markiert.

Nur andersherum klappt das nicht…

Moien

Hast du evtl. ein ListSelectionModel ausgewählt das mehrere
Selektions zulässt ? (setSelectionMode & Co)

Wie meinst Du das? Für die JList habe ich SelectionMode auf
singleselect gesetzt. Muss ich das für das Model noch irgendwo
extra tun?

nee, einmal reicht.

Passiert was auf dem Schirm wenn du
jThemenListe.setSelectedIndex(1) machst ? (Sprich: ist das
jThemenListe auch tatsächlich das was auf dem Schirm auftaucht?)

Ja, dass sieht gut aus. Wenn ich
jThemenListe.setSelectedIndex(2) ausführe, dann wird der 3.
Eintrag markiert.

Nur andersherum klappt das nicht…

und getSelectedObject liefert auch null zurück ?

Kannst du den Code mal komplett irgendwie hochladen ?

cu

Kannst du den Code mal komplett irgendwie hochladen ?

Klar, kann ich machen. weiß bloß nicht, ob Dir das hilft, denn die Datenbank dazu fehlt Dir ja…

Du hast schon Recht, .getSelectedObject() gibt tatsächlich auch immer null zurück.

Hier mal der Code aus meiner FrontEnd-Klasse:

import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.KeyStroke;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class FrontEnd extends JFrame {

 /\*\*
 \* 
 \*/
 private static final long serialVersionUID = 1L;

 private JComboBox[] jComboBox = new JComboBox[20];
 private JLabel[] jLabel = new JLabel[20];

 private int jFrageNummer = 1;
 private int jAntwortNummer = 0;
 private int jUserLevel = 0;

 private JList jThemenListe = null;

 Derby derby = new Derby();

 DefaultListModel model = new DefaultListModel(); 

 private JPanel jContentPane = null;

 private JMenuBar jJMenuBar = null;
 private JMenu fileMenu = null;
 private JMenu editMenu = null;
 private JMenu helpMenu = null;
 private JMenuItem exitMenuItem = null;
 private JMenuItem aboutMenuItem = null;
 private JMenuItem cutMenuItem = null;
 private JMenuItem copyMenuItem = null;
 private JMenuItem pasteMenuItem = null;
 private JMenuItem saveMenuItem = null;

 private JRadioButton jRadioButtonGerman = null;
 private JRadioButton jRadioButtonEnglish = null;
 private JTextField jTextFieldUserName = null;
 private JPasswordField jPasswordFieldPassword = null;
 private JButton jButtonLogIn = null;
 private JButton jButtonReset = null;
 private JTextField jTextFieldSearch = null;
 private JButton jButtonSearch = null;
 private JButton jButtonBeenden = null;

 private JTextPane jTextPaneSolutions = null;

 private JLabel jLabelThemenStatus = null;
 private JLabel jLabelAnzahlThemen = null;

 private String jStringMainTitle;
 private String jStringLoginButton;
 private String jStringChoice;
 private String jStringUserNameTextField;
 private String jStringPasswordPasswordField;
 private String jStringResetButton;
 private String jStringGermanRadioButton;
 private String jStringEnglishRadioButton;
 private String jStringSearchTextField;
 private String jStringSearchButton;
 private String jStringThemenStatus;
 private String jStringCloseButton;



 /\*\*
 \* This is the default constructor
 \*/
 public FrontEnd() {
 super();
 initialize();
 }

 /\*\*
 \* This method initializes this
 \* 
 \* @return void
 \*/
 public void initialize() {
 this.setDefaultCloseOperation(JFrame.EXIT\_ON\_CLOSE);
 this.setJMenuBar(getJJMenuBar());
 this.setSize(1024, 768);
 this.setResizable(false);
 setVisible(true);
 //this.setExtendedState(MAXIMIZED\_BOTH);
 this.setContentPane(getJContentPane());
 this.setTitle("Tuchenhagen Know-how Datenbank");

 jRadioButtonEnglish.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
 if (jRadioButtonEnglish.isSelected()) {
 jRadioButtonGerman.setSelected(false);
 } else {
 jRadioButtonGerman.setSelected(true);
 }
 setLanguageEnglish();
 }
 });
 jRadioButtonGerman.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
 if (jRadioButtonGerman.isSelected()) {
 jRadioButtonEnglish.setSelected(false);
 } else {
 jRadioButtonEnglish.setSelected(true);
 }
 setLanguageGerman();
 }
 });
 jRadioButtonGerman.setSelected(true);
 jStringChoice="\>";
 }

 /\*\*
 \* This method initializes jContentPane
 \* 
 \* @return javax.swing.JPanel
 \*/
 private JPanel getJContentPane() {
 if (jContentPane == null) {
 jLabelAnzahlThemen = new JLabel();
 jLabelAnzahlThemen.setBounds(new java.awt.Rectangle(160,665,60,25));
 jLabelAnzahlThemen.setText("");
 jLabelThemenStatus = new JLabel();
 jLabelThemenStatus.setBounds(new java.awt.Rectangle(20,665,140,25));
 jLabelThemenStatus.setText("Gefundene Einträge: ");
 jContentPane = new JPanel();
 jContentPane.setLayout(null);
 jContentPane.setBackground(java.awt.SystemColor.activeCaptionText);
 jContentPane.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
 jContentPane.add(getJRadioButtonDeutsch(), null);
 jContentPane.add(getJRadioButtonEnglisch(), null);
 jContentPane.add(getJTextFieldUserName(), null);
 jContentPane.add(getJPasswordFieldPassword(), null);
 jContentPane.add(getJButtonLogIn(), null);
 jContentPane.add(getJButtonReset(), null);
 jContentPane.add(getJTextFieldSearch(), null);
 jContentPane.add(getJButtonSearch(), null);
 jContentPane.add(getJTextPaneSolutions(), null);
 jContentPane.add(jLabelThemenStatus, null);
 jContentPane.add(jLabelAnzahlThemen, null);
 jContentPane.add(getJButtonBeenden(), null);

 jTextFieldUserName.addMouseListener(new java.awt.event.MouseAdapter() {
 public void mousePressed(MouseEvent e) {
 jTextFieldUserName.setText("");

 }
 });
 jPasswordFieldPassword
 .addMouseListener(new java.awt.event.MouseAdapter() {
 public void mousePressed(MouseEvent e) {
 jPasswordFieldPassword.setText("");

 }
 });
 jButtonLogIn.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
 verifyUser();
 }
 });
 }
 return jContentPane;
 }

 /\*\*
 \* This method initializes jJMenuBar 
 \* 
 \* @return javax.swing.JMenuBar 
 \*/
 private JMenuBar getJJMenuBar() {
 if (jJMenuBar == null) {
 jJMenuBar = new JMenuBar();
 jJMenuBar.setBackground(java.awt.SystemColor.inactiveCaptionText);
 jJMenuBar.add(getFileMenu());
 jJMenuBar.add(getEditMenu());
 jJMenuBar.add(getHelpMenu());
 }
 return jJMenuBar;
 }

 /\*\*
 \* This method initializes jMenu 
 \* 
 \* @return javax.swing.JMenu 
 \*/
 private JMenu getFileMenu() {
 if (fileMenu == null) {
 fileMenu = new JMenu();
 fileMenu.setText("Datei");
 fileMenu.setBackground(java.awt.SystemColor.inactiveCaptionText);
 fileMenu.add(getSaveMenuItem());
 fileMenu.add(getExitMenuItem());
 }
 return fileMenu;
 }

 /\*\*
 \* This method initializes jMenu 
 \* 
 \* @return javax.swing.JMenu 
 \*/
 private JMenu getEditMenu() {
 if (editMenu == null) {
 editMenu = new JMenu();
 editMenu.setText("Bearbeiten");
 editMenu.setBackground(java.awt.SystemColor.inactiveCaptionText);
 editMenu.add(getCutMenuItem());
 editMenu.add(getCopyMenuItem());
 editMenu.add(getPasteMenuItem());
 }
 return editMenu;
 }

 /\*\*
 \* This method initializes jMenu 
 \* 
 \* @return javax.swing.JMenu 
 \*/
 private JMenu getHelpMenu() {
 if (helpMenu == null) {
 helpMenu = new JMenu();
 helpMenu.setText("Hilfe");
 helpMenu.setBackground(java.awt.SystemColor.inactiveCaptionText);
 helpMenu.add(getAboutMenuItem());
 }
 return helpMenu;
 }

 /\*\*
 \* This method initializes jMenuItem 
 \* 
 \* @return javax.swing.JMenuItem 
 \*/
 private JMenuItem getExitMenuItem() {
 if (exitMenuItem == null) {
 exitMenuItem = new JMenuItem();
 exitMenuItem.setText("Beenden");
 exitMenuItem.setBackground(java.awt.SystemColor.inactiveCaptionText);
 exitMenuItem.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
 System.exit(0);
 }
 });
 }
 return exitMenuItem;
 }

 /\*\*
 \* This method initializes jMenuItem 
 \* 
 \* @return javax.swing.JMenuItem 
 \*/
 private JMenuItem getAboutMenuItem() {
 if (aboutMenuItem == null) {
 aboutMenuItem = new JMenuItem();
 aboutMenuItem.setText("Über");
 aboutMenuItem.setBackground(java.awt.SystemColor.inactiveCaptionText);
 aboutMenuItem.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
 new JDialog(FrontEnd.this, "Über", true).show();
 }
 });
 }
 return aboutMenuItem;
 }

 /\*\*
 \* This method initializes jMenuItem 
 \* 
 \* @return javax.swing.JMenuItem 
 \*/
 private JMenuItem getCutMenuItem() {
 if (cutMenuItem == null) {
 cutMenuItem = new JMenuItem();
 cutMenuItem.setText("Ausschneiden");
 cutMenuItem.setBackground(java.awt.SystemColor.inactiveCaptionText);
 cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_X,
 Event.CTRL\_MASK, true));
 }
 return cutMenuItem;
 }

 /\*\*
 \* This method initializes jMenuItem 
 \* 
 \* @return javax.swing.JMenuItem 
 \*/
 private JMenuItem getCopyMenuItem() {
 if (copyMenuItem == null) {
 copyMenuItem = new JMenuItem();
 copyMenuItem.setText("Kopieren");
 copyMenuItem.setBackground(java.awt.SystemColor.inactiveCaptionText);
 copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_C,
 Event.CTRL\_MASK, true));
 }
 return copyMenuItem;
 }

 /\*\*
 \* This method initializes jMenuItem 
 \* 
 \* @return javax.swing.JMenuItem 
 \*/
 private JMenuItem getPasteMenuItem() {
 if (pasteMenuItem == null) {
 pasteMenuItem = new JMenuItem();
 pasteMenuItem.setText("Einfügen");
 pasteMenuItem.setBackground(java.awt.SystemColor.inactiveCaptionText);
 pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_V,
 Event.CTRL\_MASK, true));
 }
 return pasteMenuItem;
 }

 /\*\*
 \* This method initializes jMenuItem 
 \* 
 \* @return javax.swing.JMenuItem 
 \*/
 private JMenuItem getSaveMenuItem() {
 if (saveMenuItem == null) {
 saveMenuItem = new JMenuItem();
 saveMenuItem.setText("Speichern");
 saveMenuItem.setBackground(java.awt.SystemColor.inactiveCaptionText);
 saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_S,
 Event.CTRL\_MASK, true));
 }
 return saveMenuItem;
 }

 public void setLanguageGerman() {
 jStringMainTitle = "GEA Tuchenhagen Flow Components - Know-How Datenbank";
 jStringChoice = "\>";
 jStringLoginButton = "Einloggen";
 jStringUserNameTextField = "Benutzer";
 jStringPasswordPasswordField = "Passwort";
 jStringResetButton = "Zurücksetzen";
 jStringGermanRadioButton = "Deutsch";
 jStringEnglishRadioButton = "Englisch";
 jStringSearchTextField = "Begriff eingeben";
 jStringSearchButton = "Suchen";
 jStringThemenStatus = "Gefundene Einträge: ";
 jStringCloseButton = "Beenden";

 this.setTitle(jStringMainTitle);
 jButtonLogIn.setText(jStringLoginButton);
 jTextFieldUserName.setText(jStringUserNameTextField);
 jPasswordFieldPassword.setText(jStringPasswordPasswordField);
 jButtonReset.setText(jStringResetButton);
 jRadioButtonGerman.setText(jStringGermanRadioButton);
 jRadioButtonEnglish.setText(jStringEnglishRadioButton);
 jTextFieldSearch.setText(jStringSearchTextField);
 jButtonSearch.setText(jStringSearchButton);
 jLabelThemenStatus.setText(jStringThemenStatus);
 jButtonBeenden.setText(jStringCloseButton);

 resetAll();
 }

 public void setLanguageEnglish() {
 jStringMainTitle = "GEA Tuchenhagen Flow Components - Know-How Database";
 jStringChoice = "\>";
 jStringLoginButton = "Login";
 jStringUserNameTextField = "User";
 jStringPasswordPasswordField = "Password";
 jStringResetButton = "Reset";
 jStringGermanRadioButton = "German";
 jStringEnglishRadioButton = "English";
 jStringSearchTextField = "Insert search item";
 jStringSearchButton = "Search";
 jStringThemenStatus = "Found Entries: ";
 jStringCloseButton = "Close";

 this.setTitle(jStringMainTitle);
 jButtonLogIn.setText(jStringLoginButton);
 jTextFieldUserName.setText(jStringUserNameTextField);
 jPasswordFieldPassword.setText(jStringPasswordPasswordField);
 jButtonReset.setText(jStringResetButton);
 jRadioButtonGerman.setText(jStringGermanRadioButton);
 jRadioButtonEnglish.setText(jStringEnglishRadioButton);
 jTextFieldSearch.setText(jStringSearchTextField);
 jButtonSearch.setText(jStringSearchButton);
 jLabelThemenStatus.setText(jStringThemenStatus);
 jButtonBeenden.setText(jStringCloseButton);

 resetAll();
 }


 /\*\*
 \* This method initializes jRadioButtonDeutsch 
 \* 
 \* @return javax.swing.JRadioButton 
 \*/
 private JRadioButton getJRadioButtonDeutsch() {
 if (jRadioButtonGerman == null) {
 jRadioButtonGerman = new JRadioButton();
 jRadioButtonGerman.setBounds(new java.awt.Rectangle(880,20,120,25));
 jRadioButtonGerman.setText("Deutsch");
 jRadioButtonGerman.setBackground(java.awt.SystemColor.white);
 }
 return jRadioButtonGerman;
 }

 /\*\*
 \* This method initializes jRadioButtonEnglisch 
 \* 
 \* @return javax.swing.JRadioButton 
 \*/
 private JRadioButton getJRadioButtonEnglisch() {
 if (jRadioButtonEnglish == null) {
 jRadioButtonEnglish = new JRadioButton();
 jRadioButtonEnglish.setBounds(new java.awt.Rectangle(880,40,120,25));
 jRadioButtonEnglish.setText("English");
 jRadioButtonEnglish.setBackground(java.awt.SystemColor.white);
 }
 return jRadioButtonEnglish;
 }

 /\*\*
 \* This method initializes jTextFieldUserName 
 \* 
 \* @return javax.swing.JTextField 
 \*/
 private JTextField getJTextFieldUserName() {
 if (jTextFieldUserName == null) {
 jTextFieldUserName = new JTextField();
 jTextFieldUserName.setBounds(new java.awt.Rectangle(880,90,120,25));
 jTextFieldUserName.setText("Benutzer");
 }
 return jTextFieldUserName;
 }

 /\*\*
 \* This method initializes jPasswordFieldPassword 
 \* 
 \* @return javax.swing.JPasswordField 
 \*/
 private JPasswordField getJPasswordFieldPassword() {
 if (jPasswordFieldPassword == null) {
 jPasswordFieldPassword = new JPasswordField();
 jPasswordFieldPassword.setBounds(new java.awt.Rectangle(880,120,120,25));
 jPasswordFieldPassword.setText("Passwort");
 }
 return jPasswordFieldPassword;
 }

 /\*\*
 \* This method initializes jButtonLogIn 
 \* 
 \* @return javax.swing.JButton 
 \*/
 private JButton getJButtonLogIn() {
 if (jButtonLogIn == null) {
 jButtonLogIn = new JButton();
 jButtonLogIn.setBounds(new java.awt.Rectangle(880,150,120,25));
 jButtonLogIn.setText("Login");
 jButtonLogIn.setBackground(java.awt.SystemColor.white);
 }
 return jButtonLogIn;
 } 

 /\*\*
 \* This method initializes jButtonReset 
 \* 
 \* @return javax.swing.JButton 
 \*/
 private JButton getJButtonReset() {
 if (jButtonReset == null) {
 jButtonReset = new JButton();
 jButtonReset.setBounds(new java.awt.Rectangle(880,200,120,25));
 jButtonReset.setText("Zurücksetzen");
 jButtonReset.setBackground(java.awt.SystemColor.white);
 jButtonReset.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
 resetAll();
 }
 });

 }
 return jButtonReset;
 }

 private void resetAll(){
 jContentPane.validate();
 jContentPane.repaint();
 jFrageNummer = 1;
 jAntwortNummer = 0;
 model.clear();
 jContentPane.removeAll();
 jContentPane.add(getJRadioButtonDeutsch(), null);
 jContentPane.add(getJRadioButtonEnglisch(), null);
 jContentPane.add(getJTextFieldUserName(), null);
 jContentPane.add(getJPasswordFieldPassword(), null);
 jContentPane.add(getJButtonLogIn(), null);
 jContentPane.add(getJButtonReset(), null);
 jContentPane.add(getJTextFieldSearch(), null);
 jContentPane.add(getJButtonSearch(), null);
 jContentPane.add(getJButtonBeenden(), null);
 jContentPane.add(jLabelThemenStatus, null);
 jContentPane.add(jLabelAnzahlThemen, null);
 katalogAnzeigen();
 }

 /\*\*
 \* This method initializes jTextFieldSearch 
 \* 
 \* @return javax.swing.JTextField 
 \*/
 private JTextField getJTextFieldSearch() {
 if (jTextFieldSearch == null) {
 jTextFieldSearch = new JTextField();
 jTextFieldSearch.setBounds(new java.awt.Rectangle(880,250,120,25));
 }
 return jTextFieldSearch;
 }

 /\*\*
 \* This method initializes jButtonSearch 
 \* 
 \* @return javax.swing.JButton 
 \*/
 private JButton getJButtonSearch() {
 if (jButtonSearch == null) {
 jButtonSearch = new JButton();
 jButtonSearch.setBounds(new java.awt.Rectangle(880,280,120,25));
 jButtonSearch.setText("Suchen");
 jButtonSearch.setBackground(java.awt.SystemColor.white);
 }
 return jButtonSearch;
 }


 /\*\*
 \* This method initializes jButtonBeenden 
 \* 
 \* @return javax.swing.JButton 
 \*/
 private JButton getJButtonBeenden() {
 if (jButtonBeenden == null) {
 jButtonBeenden = new JButton();
 jButtonBeenden.setBounds(new java.awt.Rectangle(880,330,120,25));
 jButtonBeenden.setText("Beenden");
 jButtonBeenden.setBackground(java.awt.SystemColor.white);
 }
 return jButtonBeenden;
 }

 public void verifyUser() {

 Derby derby = new Derby();
 derby.connect();
 derby.verifyUserPassword(jTextFieldUserName.getText(), new String(
 jPasswordFieldPassword.getPassword()));
 System.out.println("Userstatus: " + derby.PasswordUsername);
 System.out.println("Userlevel: " + derby.UserLevel);
 if ((derby.PasswordUsername) & (derby.UserLevel == 2)) {

 } else {

 }
 derby.disconnect();
 }

 /\*\*
 \* This method initializes jTextPaneSolutions 
 \* 
 \* @return javax.swing.JTextPane 
 \*/
 private JTextPane getJTextPaneSolutions() {
 if (jTextPaneSolutions == null) {
 jTextPaneSolutions = new JTextPane();
 jTextPaneSolutions.setBounds(new java.awt.Rectangle((1024-3\*20)/2+34,530,(1024-3\*20)/2,140));
 jTextPaneSolutions.setEditable(false);
 }
 return jTextPaneSolutions;
 }







 public void katalogAnzeigen(){

 jThemenListe = new JList(model);
 jThemenListe.setBackground(java.awt.SystemColor.info);
 JScrollPane jScrollingList = new JScrollPane(jThemenListe);
 jScrollingList.setBounds(new java.awt.Rectangle(20,530,(1024-3\*20)/2,140));
 jScrollingList.setBackground(java.awt.SystemColor.info);
 model.clear(); 
 jContentPane.add(jScrollingList);


 jContentPane.validate();
 jContentPane.repaint();

 jComboBox[jFrageNummer] = new JComboBox();
 jComboBox[jFrageNummer].setBounds(new java.awt.Rectangle(400,
 20 + (jFrageNummer - 1) \* 28, 400, 25));
 jComboBox[jFrageNummer].setBackground(java.awt.SystemColor.white);
 jContentPane.add(jComboBox[jFrageNummer]);

 jLabel[jFrageNummer] = new JLabel();
 jLabel[jFrageNummer].setBounds(new java.awt.Rectangle(20,
 20 + (jFrageNummer - 1) \* 28, 360, 25));
 jLabel[jFrageNummer].setBackground(java.awt.SystemColor.white);
 jContentPane.add(jLabel[jFrageNummer]);

 derby.connect();
 derby.showQuestion(jUserLevel, jFrageNummer, jAntwortNummer);

 if (jRadioButtonGerman.isSelected()) {
 jLabel[jFrageNummer].setText(((Data) derby.listeF.get(0))
 .getDeutsch());
 } else {
 jLabel[jFrageNummer].setText(((Data) derby.listeF.get(0))
 .getEnglisch());
 }

 jComboBox[jFrageNummer].addItem(jStringChoice);

 if (jRadioButtonGerman.isSelected()) {
 for (int i=0; i

Ich frage Daten (Fragen, Antworten, Themen (um die geht es in der JList), Lösungen, .. aus der DB (Apache Derby) ab und lasse sie in JComboBoxen und JLists anzeigen. 
Aus dieser JList soll der Anwender nun ein Thema auswählen können, um sich die Lösung dazu anzuschauen.

Das meiste (relevante) passiert wohl in der Methode katalogAnzeigen().

Also die Daten in der Liste stimmen schon. Und wenn setSelectedIndex geht, dann sind ja scheinbar auch die Elemente drin, oder?

Ich stehe voll auf dem Schlauch :wink:

Moien

Das meiste (relevante) passiert wohl in der Methode
katalogAnzeigen().

Also die Daten in der Liste stimmen schon. Und wenn
setSelectedIndex geht, dann sind ja scheinbar auch die
Elemente drin, oder?

Du benutzt ein Model-Object für mehrere Listen von denen ein paar nicht mehr angezeigt werden, aber immernoch Listener haben.

Enweder du erzeugst die JList nur einmal (und auch nur ein Listener) und machst mit model.clear & Co rum, oder du erzeugst alles nochmal (Model und JList).

cu

Du benutzt ein Model-Object für mehrere Listen von denen ein
paar nicht mehr angezeigt werden, aber immernoch Listener
haben.

Enweder du erzeugst die JList nur einmal (und auch nur ein
Listener) und machst mit model.clear & Co rum, oder du
erzeugst alles nochmal (Model und JList).

Du hast Recht, genau das war mein Problem. Da habe ich den Wald vor lauter Bäumen nicht gesehen.

Vielen Dank für Deine kompetente und schnelle Hilfe.
Gruß Nicolas