Ajouter valeur dans JTable
Bonjour,
J'ai un JTable et quand je clic sur une cellule d'un JTable, sa m'ouvre une fenêtre avec une liste et quand je sélectionne une valeur dans cette liste, je souhaiterais qu'elle s'ajoute dans la cellule de ma JTable.
Or, cela me provoque une exception:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
Voici mes différentes classes:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
| public class CalendrierTableModele extends AbstractTableModel {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
/**
* Attribut Calendrier calendrier
*/
private Calendrier calendrier;
private Calendar calendar;
private final List<Seance> seances;
/**
* Constructeur
* @param calendar
* @param calendrier
*/
public CalendrierTableModele(Calendar calendar, Calendrier calendrier, List<Seance> seances){
this.calendar = calendar;
this.calendrier = calendrier;
this.seances = seances;
}
/**
* Méthode qui retourne le nombre de colonne
* @return les 7 jours de la semaine
*/
public int getColumnCount(){
return 7;
}
/**
* Méthode qui retourne le nombre de ligne
* @return les 2 lignes : matin et après-midi
*/
public int getRowCount(){
return 2;
}
/**
* Méthode qui retourne la valeur d'une cellule
* @param row : index de la ligne
* @param col : index de la colonne
* @return Object
*/
public Object getValueAt(int row, int col){
if(seances.size() != 0)
return seances.get(row).getModule().getNom();
else
return "";
}
/**
* Méthode qui permet de dire si une cellule est éditable ou non
* @param row : index de ligne
* @param col : index de la colonne
* @return boolean
*/
public boolean isCellEditable(int row, int col){
return false;
}
/**
* Méthode qui permet d'ajouter une valeur dans une cellule
* @param row : index de la ligne
* @param col : index de la colonne
*/
public void setValueAt(Object value, int row, int col){
if(value != null){
Seance seance = seances.get(row);
seance.getModule().setNom((String)value);
}
}
/**
* Méthode qui retourne le nom d'une colonne
* @param col : index de la colonne
*/
public String getColumnName(int col) {
return getDayName(col);
}
/**
* Méthode qui retourne nom d'un jours en français
* @param day
* @return le libellé du jours
*/
private String getDayName(int day) {
Calendar calendarDay = Calendar.getInstance();
calendarDay.setTime(calendar.getTime());
calendarDay.add(Calendar.DATE, day);
return calendarDay.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault())+" "+calendarDay.get(Calendar.DATE); // bug sur cette ligne calendar au lieu de calendarDay
}
/**
* Accesseur en lecture
* @return calendrier
*/
public Calendrier getCalendrier() {
return calendrier;
}
/**
* Accesseur en écriture
* @param calendrier
*/
public void setCalendrier(Calendrier calendrier) {
this.calendrier = calendrier;
}
/**
* Accesseur en lecture
* @return calendar
*/
public Calendar getCalendar() {
return calendar;
}
/**
* Accesseur en écriture
* @param calendar
*/
public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}
public void addSeance(Seance seance) {
System.out.println(seance.getModule().getNom());
//calendrier.getUneFormation().getSeances().add(seance);
seances.add(seance);
fireTableRowsInserted(seances.size() -1, seances.size() -1);
}
public List<Seance> getSeances(){
return seances;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| public class Seance extends JFrame implements ActionListener, WindowListener{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
private JComboBox liste;
private JButton creer;
private JPanel panChoixModule;
private JLabel choixModule;
private JScrollPane ascenseur;
private List<metiers.Module> modules;
private int ligne;
private int colonne;
private CalendrierTableModele calendrierTableModele;
/**
* Constructeur
* @param accueil
*/
public Seance(List<metiers.Module> modules, int ligne, int colonne, CalendrierTableModele calendrierTableModele){
this.modules = modules;
this.ligne = ligne;
this.colonne = colonne;
this.calendrierTableModele = calendrierTableModele;
setTitle("Ajout d'une séaunce");
setSize(300,250);
setLocationRelativeTo(null);
ajouterComposants();
this.addWindowListener(this);
}
/**
* Méthode qui ajoute les composants graphiques à la vue
*/
private void ajouterComposants(){
//Liste des module
liste = new JComboBox();
liste.addItem("Veuillez seléctionner un module");
for(metiers.Module unModule : modules){
liste.addItem(unModule.getNom());
}
liste.setSelectedIndex(0);
//ascenseur = new JScrollPane(liste);
// ascenseur.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
//Ajout des différents composants au panel
panChoixModule = new JPanel();
creer = new JButton("Créer la séance");
choixModule = new JLabel("Veuillez choisir un module à placer");
choixModule.setFont(new Font(null, Font.BOLD, 16));
//panChoixModule.setLayout(new BorderLayout());
panChoixModule.add(liste);
add(choixModule, BorderLayout.NORTH);
add(panChoixModule);
add(creer, BorderLayout.SOUTH);
creer.addActionListener(this);
}
/**
* Méthode appelée lors du clic sur le bouton creer
*/
public void actionPerformed(ActionEvent event) {
Object valeur = liste.getSelectedItem();
metiers.Seance uneSeance = new metiers.Seance();
metiers.Module module = new metiers.Module();
module = uneSeance.convertirUneSeance(valeur.toString());
uneSeance.setIndexColonne(colonne);
uneSeance.setIndexLigne(ligne);
uneSeance.setModule(module);
System.out.println(ligne);
calendrierTableModele.addSeance(uneSeance);
this.dispose();
}
public void windowActivated(WindowEvent arg0){}
public void windowClosed(WindowEvent arg0){}
public void windowClosing(WindowEvent arg0){}
public void windowDeactivated(WindowEvent arg0){}
public void windowDeiconified(WindowEvent arg0){}
public void windowIconified(WindowEvent arg0){}
public void windowOpened(WindowEvent arg0){}
} |
Merci de votre aide