Problème de conception [JAVA]

aveuglemspas_sourd Messages postés 312 Statut Membre -  
 danimo -
Bonjour,

Voila je développe une application et j'ai dans une même frame 3 JList : client, exercice, questionnaire.

La première Jlist est chargé automatiquement, la second est chargé lorsque je clique sur un client
et la troisieme est chargé lorsque je clique sur un exercice.

Jusque là pas de problème, sauf que si je clique sur un client, puis sur un exercice puis sur un questionnaire, et que je décide de changer de client, il reste une selection, du coup j'ai ajouter à mes listener des clearselection()
Sauf que ça me gènere des erreur dans la console mais ne gène en rien le déroulement de l'application.

J'en vient donc à ma question : est-il génant d'ajouter des try catch, ce qui fait que je n'ai plus d'erreur lol et mon programme se déroule bien ou alors il existe forcément une solution à mon problème que je n'ai pas encore trouvé?
Configuration: Windows Vista Internet Explorer 7.0

3 réponses

  1. danimo
     
    Salut,

    Un bout de code ainsi que la liste d'erreur(s) seraient vraiment utiles !!!

    Cordialement,

    Dan
    0
  2. aveuglemspas_sourd Messages postés 312 Statut Membre 20
     
    ah dsl je pensais pas que y'aurai quelqun qui voudrait m'iaider à directement résoudre le problème^^
    Voici les erreurs :
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.ArrayList.get(Unknown Source)
    at data.ExercicesModel.getElementAt(ExercicesModel.java:43)
    at view.ClientsView$2.valueChanged(ClientsView.java:81)
    at javax.swing.JList.fireSelectionValueChanged(Unknown Source)
    at javax.swing.JList$ListSelectionHandler.valueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
    at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
    at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(Unknown Source)
    at javax.swing.DefaultListSelectionModel.clearSelection(Unknown Source)
    at javax.swing.JList.clearSelection(Unknown Source)
    at view.ClientsView$1.valueChanged(ClientsView.java:68)
    at javax.swing.JList.fireSelectionValueChanged(Unknown Source)
    at javax.swing.JList$ListSelectionHandler.valueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Source)
    at javax.swing.JList.setValueIsAdjusting(Unknown Source)
    at javax.swing.plaf.basic.BasicListUI$Handler.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)


    et ( la methode build appellé dans la constructeur de ma classe) :

    final JPanel centerPanel = new JPanel(new GridLayout(1, 1));
    final JList clientsList = new JList(clientsModel);
    final JList exercicesList = new JList(exercicesModel);
    final JButton bouton = new JButton();
    final JList questionnaireList = new JList(questionnairesmodel);
    final ArrayList<Questionnaire> questVide = new ArrayList<Questionnaire>();
    clientsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    clientsList.setBorder(BorderFactory.createTitledBorder("Clients"));
    exercicesList.setBorder(BorderFactory.createTitledBorder("Exercices"));
    questionnaireList.setBorder(BorderFactory.createTitledBorder("Questionnaires"));
    clientsList.addListSelectionListener(new ListSelectionListener() {

    @Override
    public void valueChanged(ListSelectionEvent e) {
    if (e.getValueIsAdjusting())
    return;

    exercicesModel.setExercices(clientsModel.getElementAt(
    clientsList.getSelectedIndex()).getExercices());
    questionnaireList.setSelectedIndices(new int[] {});
    questionnaireList.validate();
    questionnairesmodel.setQuestionnaire(questVide);
    exercicesList.clearSelection();

    }

    });

    exercicesList.addListSelectionListener(new ListSelectionListener() {

    @Override
    public void valueChanged(ListSelectionEvent e) {
    if (e.getValueIsAdjusting())
    return;

    questionnairesmodel.setQuestionnaire(exercicesModel.getElementAt(exercicesList.getSelectedIndex()).getQuestionnaire());

    questionnaireList.setSelectedIndices(new int[] {});
    questionnaireList.validate();

    */
    }

    });

    questionnaireList.addListSelectionListener(new ListSelectionListener() {

    @Override
    public void valueChanged(ListSelectionEvent e) {
    if (e.getValueIsAdjusting())
    return;
    System.out.println(questionnaireList.getModel().getElementAt(questionnaireList.getSelectedIndex()));
    questionnaireList.repaint();

    }

    });

    centerPanel.add(clientsList);
    centerPanel.add(exercicesList);
    centerPanel.add(questionnaireList);

    frame.add(centerPanel, BorderLayout.CENTER);

    frame.setVisible(true);
    0
  3. danimo
     
    Salut,

    Il est toujours bon de gerer les exceptions.

    Dans le cas qui nous interresse le problème est ici:
    at data.ExercicesModel.getElementAt(ExercicesModel.java:43) ligne 43 on veut lire en -1.

    Cordialement,

    Dan
    0