[Resolu]Jtable et multi-lignes dans les cellules
Voici mon code :
Le modèle de table :
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
|
import javax.swing.table.*;
public class PlanningModel
extends AbstractTableModel {
String[] columnNames = {"Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"};
Object[][] data = null;
public PlanningModel(int l, int c) {
super();
data = new Object[l][c];
}
public int getColumnCount() {
return columnNames.length;
}
public Object getValueAt(int l, int c) {
return data[l][c];
}
public void setValueAt(Object val, int l, int c) {
data[l][c] = val;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int c) {
return columnNames[c];
}
public Class getColumnClass(int c) {
try {
return getValueAt(0, c).getClass();
}
catch (Exception ex) {
return "".getClass();
}
}
public boolean isCellEditable(int r, int c) {
return false;
}
} |
Le TableCellRenderer :
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
|
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import java.util.Date;
import javax.swing.BoxLayout;
import javax.swing.JTextArea;
public class PlanningColorRenderer extends JTextArea
implements TableCellRenderer {
protected Date now;
protected int day;
public PlanningColorRenderer(Date now, int nbRow, int nbCol) {
super(nbRow, nbCol);
this.now = now;
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
setOpaque(true);
}
public Component getTableCellRendererComponent(
JTable table, Object value, boolean selected, boolean focused, int row, int column) {
if (row % 2 == 0) {
setBackground(new Color(184, 184, 184));
table.setRowHeight(row, 13);
setText(row +" "+column);
}
else {
setBackground(Color.white);
table.setRowHeight(row, 74);
setText(row +"\n"+column);
}
return this;
}
private void setData(String text, int align){
JLabel label = new JLabel();
label.setText(text);
label.setHorizontalAlignment(label.LEFT);
add(label);
}
} |
Une partie du code pour afficher la jtable :
Code:
1 2 3 4 5 6 7 8
|
JTable jTable1 = new JTable(planningModel);
PlanningColorRenderer planningColorRenderer = new PlanningColorRenderer(currentDate,10,7);
jTable1.setDefaultRenderer(String.class, planningColorRenderer);
jTable1.setRowSelectionAllowed(false);
jPanel2.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jScrollPane1.getViewport().add(jTable1); |
La question ou plutot le problème :
Tout marche bien en apparence, sauf que j'ai une boucle infinie dans la méthode getTableCellRendererComponent de la classe PlanningColorRenderer.
Est ce que quelqu'un à une idée ? Est ce mon modèle qui pose problème ?
Merci de votre aide