Voici la solution :
/ /JPanel Courrier
JPanel panelTabCourrier = new JPanel();
panelTabCourrier.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
panelTabCourrier.setPreferredSize(new Dimension(widthTailleMoniteurDivisePar4 , hauteurTailleMoniteurDivisePar3));
panelBordelLayoutEast.add(panelTabCourrier, BorderLayout.CENTER);
panelTabCourrier.setLayout(new BorderLayout(0, 0));
JLabel lblCourrier = new JLabel("Courriers reçus :");
panelTabCourrier.add(lblCourrier, BorderLayout.NORTH);
JScrollPane scrollPaneTabCourrier = new JScrollPane();
scrollPaneTabCourrier.setViewportBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
panelTabCourrier.add(scrollPaneTabCourrier, BorderLayout.CENTER);
Path datacourrier = Paths.get(System.getProperty("user.dir") + "/DOSSIERS /" + foNom +"/COURRIER/", "Courrier.txt") ;
modelTableCourrier tabCourrier = new modelTableCourrier(datacourrier);
scrollPaneTabCourrier.setViewportView(tabCourrier);
Je fais appel à une class :
public class modelTableCourrier extends JPanel {
Dimension tailleMoniteur2 = Toolkit.getDefaultToolkit().getScreenSize();
int longeurCell1 = tailleMoniteur2.width/4 ;
int hauteurCell1 = tailleMoniteur2.height/4 ;
int hauteurCell4 = tailleMoniteur2.height/7;
public modelTableCourrier(Path dataFilePath2) {
JTable table2; // le tableau
modelTable2 model2; // le modèle
// font
Font f = new Font("SanSerif", Font.PLAIN, 24);
setFont(f);
// positionnement
setLayout(new BorderLayout());
// construction du modèle de remplissage à partir du fichier
model2 = new modelTable2(dataFilePath2);
// création du tableau
table2 = new JTable();
table2.setModel(model2);
table2.createDefaultColumnsFromModel();
//dimension des colonnes
//fixer la largeur de la 1ere colonne à 100 pixels
TableColumn col = table2.getColumnModel().getColumn(0); //date
col.setPreferredWidth(90);
//fixer la largeur de la 2eme colonne
col = table2.getColumnModel().getColumn(1); //titre
//col.setPreferredWidth(150);
col.setPreferredWidth(longeurCell1-110);
//fixer la largeur de la 3eme colonne à 0 pixels
col = table2.getColumnModel().getColumn(2);
col.setMaxWidth(0);
col.setMinWidth(0);
col.setPreferredWidth(100);
table2.setAutoCreateRowSorter(true);
// scrollpane
JScrollPane scrollpane2 = new JScrollPane(table2);
add(scrollpane2);
}
public Dimension getPreferredSize() {
return new Dimension(longeurCell1-20, hauteurCell1);
}
private void setAutoResizeMode(int autoResizeOff) {
}
}
Enfin derniere class :
public class modelTable2 extends AbstractTableModel {
protected Vector data; // données
protected Vector columnNames; // noms de colonnes
protected Path datafile2;
public modelTable2(Path f2) {
datafile2 = f2;
initVectors();
}
public void initVectors() {
String ligne;
data = new Vector();
columnNames = new Vector();
// des noms de colonnes (1ère ligne)
for(int i = 0; i < 3; i++)//on place les titres
switch (i)
{
case 0:
columnNames.addElement("DATE"); ;
break;
case 1:
columnNames.addElement("TITRE");
break;
default:
columnNames.addElement("date envers");
}
Charset charset = Charset.forName("ISO-8859-1");
try {
List<String> lines = Files.readAllLines(datafile2, charset);
for (String line : lines) {
StringTokenizer st2 = new StringTokenizer(line,"\t");
while (st2.hasMoreTokens())
data.addElement(st2.nextToken());
}
} catch (IOException e) {
System.out.println(e);
}