Utilisation de getselectedindex JAVA

Bonjour ,

Pour récupérer l'index d'une ligne selectionée dans une JLIST j'ai utilisé "getSelectedIndex()" et ça marché très bien.......cet aprem j'ai fait des modifs dans le ELSE juste après le if (indexliste == -1) ci-dessous, depuis le "getSelectedIndex()" ne marche plus j'ai toujours le message "Candidat not selected on the list" en cas d'avoir -1 comme retour.....mais je n'ai rien chancé dans mon IF, juste dans le ELSE....

if (source == PBdetailcv) {
//verificar se alguma linha foi selecionada na lista
int indexliste = liste.getSelectedIndex();
if (indexliste == -1){
System.err.println("Candidat not selected on the list");
}

else{.....

Est-ce que quelqu'un peut m'aider svp?

JAVA se conporte bizarment si on utilise SWING et AWT au même temps ?

A+ Pierre.

7 réponses

  1. Salut,

    Lors de la création de ta Jlist:
    ajoute liste.setSelectedIndex(-1); // -1 pas de selection initiale

    il n'y aura pas de sélection initiale et indexliste ne prendra alors que la valeur du numéro de ligne cliqué (0 à n, avec n = nombre total de lignes de la liste -1), le test if (indexliste == -1){ n'aura plus de raison d'être...

    Cordialement,

    Dan
    0
    1. Salut Dan, merci beaucoup pour votre réponse !

      J'ai rajouté liste.setSelectedIndex(-1); mais j'ai toujours -1 comme résultat du int indexliste = liste.getSelectedIndex();

      C'est bizard vu que ça marché bien avant et que je n'ai rien changé dans cette partie du code....

      Cordialement, Pierre.
      0
    2. Tu es certain qu'il n'y a pas d'autre
      System.err.println("Candidat not selected on the list"); après le else{... ?
      ajoute quelques caractères comme par exemple:

      System.err.println(">>>>>>>>>>>>>>>>>>> Candidat not selected on the list"); pour être certain que c'est bien ici qu'on passe

      Dan
      0
    3. Salut Dan, merci encore pour ton message !
      Pas d'autre System.err.println("Candidat not selected on the list")......

      Si je fait :
      int indexliste = liste.getSelectedIndex();
      System.out.println(indexliste); // ici j'ai toujours -1 même si occurence selectionnée dans la liste.

      C'est come si le getselectedindex était ignoré lors de la éxecution du programme.......mais je n'ai aucunne erreur de compilation......et hier ça marché encore bien....on ma dit que melanger AWT et SWING poser des problèmes.....que pensez-vous ?

      Merci beaucoup ! PIerre.
      0
    4. @PBAUDRUBon il me faudrait plus de code, au moins la partie création de la liste (JFrame, JList, listener, à partir de quoi est créée la liste)

      Dan
      0
    5. Salut Dan,

      Voici mon code, j'ai déjà remplacé tout ce qui était AWT, mais même comme ça mon getselectedindex ne marche pas......j'ai toujours -1 même avec une occurence selectionné dans ma liste.

      import java.sql.*;
      import java.util.ArrayList;
      import java.util.Iterator;
      import java.util.List;

      import javax.swing.*;
      import javax.swing.event.ChangeEvent;
      import javax.swing.event.ChangeListener;
      import javax.swing.event.ListSelectionEvent;
      import javax.swing.event.ListSelectionListener;
      import javax.swing.plaf.DesktopIconUI;

      import sun.security.action.OpenFileInputStreamAction;

      //import java.awt.Desktop;
      //import java.awt.event.ActionEvent;
      //import java.awt.event.ActionListener;

      import java.io.File;
      import java.io.IOException;
      /**
      * @author Patricia e Pierre
      *
      */
      public class Recherche extends JFrame implements ChangeListener {

      //Arraylist
      ArrayList <candidats> listret;

      //definicao PB
      JButton PBfiltrer = new JButton("Chercher");
      JButton PBeffacer = new JButton("Nouvelle recherche");
      JButton PBdetailcv = new JButton("Voir CV candidat");
      JButton PBprev = new JButton("<");
      JButton PBnext = new JButton(">");
      JButton PBfermer = new JButton("Fermer");

      //criacao das comboboxes e seus labels
      String [] combomob = {"AL",
      "BE",
      "FR",
      "LU",
      "TOUS"};

      String [] combofonc = {"DEV",
      "MAN",
      "P.MAN",
      "ADM",
      "TOUS"};

      String [] combospec = {"COOLGEN",
      "COBOL",
      "JAVA",
      ".NET",
      "TOUS"};
      //definicao Jcombobox
      JComboBox mob = new JComboBox(combomob);
      JComboBox fonc = new JComboBox(combofonc);
      JComboBox spec = new JComboBox(combospec);

      //definicao dos entryfields
      JTextField EFfiltre1 = new JTextField(20);
      JTextField EFfiltre2 = new JTextField(20);
      JTextField EFfiltre3 = new JTextField(20);
      JTextField EFfiltre4 = new JTextField(20);
      JTextField EFfiltre5 = new JTextField(20);
      JTextField EFfiltre6 = new JTextField(20);
      JTextField EFfiltre7 = new JTextField(20);

      //list e listmodel
      DefaultListModel listModel = new DefaultListModel();
      JList liste = new JList(listModel);

      public static void main(String[] args) {

      Recherche gui = new Recherche();
      gui.go();

      }

      public void go(){

      JFrame filtre = new JFrame();
      filtre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      filtre.setTitle("Recherche candidat - EUREKA ITS SA");
      filtre.setSize(950,650);
      filtre.setVisible(true);

      //Liste et LISTMODEL
      liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      liste.setSelectedIndex(0);
      liste.setSize(450, 250);
      liste.setLocation(100, 200);
      liste.setVisibleRowCount(10);
      filtre.getContentPane().add(liste);
      liste.setVisible(true);
      //liste.setSelectedIndex(-1); // -1 pas de selection initiale

      //criacao dos PBs
      PBfiltrer.setToolTipText("Lancer la recherche des candidats");
      filtre.getContentPane().add(PBfiltrer);
      PBfiltrer.setSize(120, 20);
      PBfiltrer.setLocation(430, 480);
      //PBfiltrer.addActionListener(this);
      PBfiltrer.addChangeListener(this);

      PBfermer.setToolTipText("Sortir de l'application");
      filtre.getContentPane().add(PBfermer);
      PBfermer.setSize(120, 20);
      PBfermer.setLocation(100, 480);
      //PBfermer.addActionListener(this);
      PBfermer.addChangeListener(this);
      PBeffacer.setToolTipText("Vide 100% des champs");
      filtre.getContentPane().add(PBeffacer);
      PBeffacer.setSize(150, 20);
      PBeffacer.setLocation(250, 480);
      //PBeffacer.addActionListener(this);
      PBeffacer.addChangeListener(this);

      PBdetailcv.setToolTipText("Ouvre le CV en format WORD");
      filtre.getContentPane().add(PBdetailcv);
      PBdetailcv.setSize(150, 20);
      PBdetailcv.setLocation(630, 310);
      //PBdetailcv.addActionListener(this);
      PBdetailcv.addChangeListener(this);

      PBprev.setToolTipText("Pagination");
      filtre.getContentPane().add(PBprev);
      PBprev.setSize(45, 20);
      PBprev.setLocation(555, 200);
      //PBprev.addActionListener(this);
      PBprev.addChangeListener(this);

      PBnext.setToolTipText("Pagination");
      filtre.getContentPane().add(PBnext);
      PBnext.setSize(45, 20);
      PBnext.setLocation(555, 430);
      //PBnext.addActionListener(this);
      PBnext.addChangeListener(this);

      //criacao dos Labels e entry fields
      JLabel LBfiltre1 = new JLabel("Mots clés");
      filtre.getContentPane().add(LBfiltre1);
      filtre.getContentPane().add(EFfiltre1);
      LBfiltre1.setSize(120, 20);
      LBfiltre1.setLocation(80, 130);
      EFfiltre1.setSize(120, 20);
      EFfiltre1.setLocation(80, 150);

      JLabel LBfiltre2 = new JLabel("");
      filtre.getContentPane().add(LBfiltre2);
      filtre.getContentPane().add(EFfiltre2);
      LBfiltre2.setSize(120, 20);
      LBfiltre2.setLocation(220, 130);
      EFfiltre2.setSize(120, 20);
      EFfiltre2.setLocation(220, 150);

      JLabel LBfiltre3 = new JLabel("");
      filtre.getContentPane().add(LBfiltre3);
      filtre.getContentPane().add(EFfiltre3);
      LBfiltre3.setSize(120, 20);
      LBfiltre3.setLocation(360, 130);
      EFfiltre3.setSize(120, 20);
      EFfiltre3.setLocation(360, 150);

      JLabel LBfiltre4 = new JLabel("");
      filtre.getContentPane().add(LBfiltre4);
      filtre.getContentPane().add(EFfiltre4);
      LBfiltre4.setSize(120, 20);
      LBfiltre4.setLocation(500, 130);
      EFfiltre4.setSize(120, 20);
      EFfiltre4.setLocation(500, 150);

      JLabel LBfiltre5 = new JLabel("");
      filtre.getContentPane().add(LBfiltre5);
      filtre.getContentPane().add(EFfiltre5);
      LBfiltre5.setSize(120, 20);
      LBfiltre5.setLocation(640, 130);
      EFfiltre5.setSize(120, 20);
      EFfiltre5.setLocation(640, 150);

      JLabel LBfiltre6 = new JLabel("Date début CV");
      filtre.getContentPane().add(LBfiltre6);
      filtre.getContentPane().add(EFfiltre6);
      LBfiltre6.setSize(120, 20);
      LBfiltre6.setLocation(500, 40);
      EFfiltre6.setSize(120, 20);
      EFfiltre6.setLocation(500, 60);

      JLabel LBfiltre7 = new JLabel("Date fin CV");
      filtre.getContentPane().add(LBfiltre7);
      filtre.getContentPane().add(EFfiltre7);
      LBfiltre7.setSize(120, 20);
      LBfiltre7.setLocation(640, 40);
      EFfiltre7.setSize(120, 20);
      EFfiltre7.setLocation(640, 60);

      //definicao Jcombobox
      JLabel LBmob = new JLabel("Mobilité");
      JLabel LBfonc = new JLabel("Fonction");
      JLabel LBspec = new JLabel("Spécialisation");

      filtre.getContentPane().add(mob);
      filtre.getContentPane().add(fonc);
      filtre.getContentPane().add(spec);
      filtre.getContentPane().add(LBmob);
      filtre.getContentPane().add(LBfonc);
      filtre.getContentPane().add(LBspec);

      //placement des comboboxes
      mob.setSize(120, 20);
      mob.setLocation(80, 60);
      LBmob.setSize(120, 20);
      LBmob.setLocation(80, 40);

      fonc.setSize(120, 20);
      fonc.setLocation(220, 60);
      LBfonc.setSize(120, 20);
      LBfonc.setLocation(220, 40);

      spec.setSize(120, 20);
      spec.setLocation(360, 60);
      LBspec.setSize(120, 20);
      LBspec.setLocation(360, 40);

      //definir valores default das combo boxes
      mob.setSelectedIndex(4);
      fonc.setSelectedIndex(4);
      spec.setSelectedIndex(4);

      //foco no primeiro campo
      mob.requestFocus();

      }

      @Override
      public void stateChanged(ChangeEvent event) {
      // TODO Auto-generated method stub
      Object source = event.getSource();
      //gestion PBfermer
      if (source == PBfermer) {
      System.exit(0); }

      //gestion PBeffacer
      if (source == PBeffacer) {
      EFfiltre1.setText("");
      EFfiltre2.setText("");
      EFfiltre3.setText("");
      EFfiltre4.setText("");
      EFfiltre5.setText("");
      EFfiltre6.setText("");
      EFfiltre7.setText("");
      mob.setSelectedIndex(4);
      fonc.setSelectedIndex(4);
      spec.setSelectedIndex(4);}
      //limpar list antes de nova busca
      listModel.clear();

      //gestion PBfiltrer
      if (source == PBfiltrer) {
      String filtre1 = EFfiltre1.getText();
      String filtre2 = EFfiltre2.getText();
      String filtre3 = EFfiltre3.getText();
      String filtre4 = EFfiltre4.getText();
      String filtre5 = EFfiltre5.getText();
      String filtre6 = EFfiltre6.getText();
      String filtre7 = EFfiltre7.getText();

      //limpar list antes de nova busca
      listModel.clear();

      //ArrayList <candidats> listret = DB.connection(filtre1);
      listret = DB.connection(filtre1, filtre2);
      Iterator<candidats> iter = listret.iterator();
      while(iter.hasNext()){
      candidats element = iter.next();
      //System.out.println(element.nom);
      String row = element.getPrenom() + ", " + element.getNom() + " - " + element.getChemincv();
      listModel.addElement(row);
      }
      }

      //gestion PBdetailcv
      if (source == PBdetailcv) {

      //verificar se alguma linha foi selecionada na lista
      //int indexliste = liste.getMinSelectionIndex();
      int indexliste = liste.getSelectedIndex();
      System.out.println(indexliste);
      if (indexliste == -1){
      System.out.println("Candidat not selected on the list");
      }

      else{
      //recuperar linha selecionada
      Object rowsel = liste.getSelectedValue();
      System.out.println(rowsel);
      String cv = rowsel.toString();
      String chemincv = cv.substring(66);
      String chemincvcomplet = "C:\\CV\\" + chemincv + ".doc";
      //String chemincvcomplet = "C:\\CV\\" + "CV_BAUDRU" + ".doc";
      //Open word document from java
      try {
      //Desktop.getDesktop().open( new File(chemincvcomplet));

      Runtime.getRuntime().exec(chemincvcomplet);
      }
      catch (IOException e)
      {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }
      }

      }

      //gestion PBnext
      if (source == PBnext) {
      }

      //gestion PBprev
      if (source == PBprev) {
      }

      }

      /*@Override
      public void actionPerformed(ActionEvent event) {
      // TODO Auto-generated method stub
      Object source = event.getSource();
      //gestion PBfermer
      if (source == PBfermer) {
      System.exit(0); }

      //gestion PBeffacer
      if (source == PBeffacer) {
      EFfiltre1.setText("");
      EFfiltre2.setText("");
      EFfiltre3.setText("");
      EFfiltre4.setText("");
      EFfiltre5.setText("");
      EFfiltre6.setText("");
      EFfiltre7.setText("");
      mob.setSelectedIndex(4);
      fonc.setSelectedIndex(4);
      spec.setSelectedIndex(4);}
      //limpar list antes de nova busca
      listModel.clear();

      //gestion PBfiltrer
      if (source == PBfiltrer) {
      String filtre1 = EFfiltre1.getText();
      String filtre2 = EFfiltre2.getText();
      String filtre3 = EFfiltre3.getText();
      String filtre4 = EFfiltre4.getText();
      String filtre5 = EFfiltre5.getText();
      String filtre6 = EFfiltre6.getText();
      String filtre7 = EFfiltre7.getText();

      //limpar list antes de nova busca
      listModel.clear();

      //ArrayList <candidats> listret = DB.connection(filtre1);
      listret = DB.connection(filtre1, filtre2);
      Iterator<candidats> iter = listret.iterator();
      while(iter.hasNext()){
      candidats element = iter.next();
      //System.out.println(element.nom);
      String row = element.getPrenom() + ", " + element.getNom() + " - " + element.getChemincv();
      listModel.addElement(row);
      }
      }

      //gestion PBdetailcv
      if (source == PBdetailcv) {

      //verificar se alguma linha foi selecionada na lista
      //int indexliste = liste.getMinSelectionIndex();
      int indexliste = liste.getSelectedIndex();

      System.out.println(indexliste);
      if (indexliste == 1){
      System.out.println("Candidat not selected on the list");
      }

      else{
      //recuperar linha selecionada
      //Object rowsel = liste.getSelectedValue();
      //System.out.println(rowsel);
      //String cv = rowsel.toString();
      //String chemincv = cv.substring(66);
      //String chemincvcomplet = "C:\\CV\\" + chemincv + ".doc";
      String chemincvcomplet = "C:\\CV\\" + "CV_BAUDRU" + ".doc";
      //Open word document from java
      try {
      Desktop.getDesktop().open( new File(chemincvcomplet));
      }
      catch (IOException e)
      {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }
      }

      }

      //gestion PBnext
      if (source == PBnext) {
      }

      //gestion PBprev
      if (source == PBprev) {
      }

      }*/

      }

      Je suis vraimment un débutant alors n'hésitez pas a me dire ce qui ne va pas dans mon code svp.

      Cordialement, Pierre.
      0