Bonjour,
Merci!!
Oui en effet j'ai oublié du code là c'est le modele de mon tableau
alors la gestion de ma JTable :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package balance;
import com.sun.comm.Win32Driver;
import java.awt.Component;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.UnsupportedCommOperationException;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
/**
*
* @author Christine
*/
public class Tableau
{
JTable laTable;
private boolean DEBUG=false;
Balance balance;
private ArrayList listePoids=new ArrayList();
private BufferedReader bufRead;
private CommPortIdentifier portId;
private SerialPort sPort;
public Tableau(int i) throws IOException, NoSuchPortException, PortInUseException, UnsupportedCommOperationException
{
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize(); //initialisation du driver
portId = CommPortIdentifier.getPortIdentifier("COM1"); //identification du port COM1
sPort = (SerialPort) portId.open("BalanceAutomatique", 3000); //Ouvertur du port COM1
sPort.setSerialPortParams(9600, SerialPort.DATABITS_7, SerialPort.STOPBITS_1, SerialPort.PARITY_ODD);
bufRead = new BufferedReader(new InputStreamReader(sPort.getInputStream())); //Preparation de la lecture du port COM1
this.laTable = new JTable(new MyTableModel(i));
initColumnSizes(laTable);
// balance=new Balance();
}
private void initColumnSizes(JTable table) {
MyTableModel model = (MyTableModel)table.getModel();
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
int cellWidth = 0;
Object[] longValues = model.longValues;
TableCellRenderer headerRenderer =
table.getTableHeader().getDefaultRenderer();
int indexFin=0;
for (int i = 0; i < indexFin; i++) {
System.out.println(i);
System.out.println(indexFin);
column = table.getColumnModel().getColumn(i);
comp = headerRenderer.getTableCellRendererComponent(
null, column.getHeaderValue(),
false, false, 0, 0);
headerWidth = comp.getPreferredSize().width;
comp = table.getDefaultRenderer(model.getColumnClass(i)).
getTableCellRendererComponent(
table, longValues[i],
false, false, 0, i);
cellWidth = comp.getPreferredSize().width;
if (DEBUG) {
System.out.println("Initializing width of column "
+ i + ". "
+ "headerWidth = " + headerWidth
+ "; cellWidth = " + cellWidth);
}
column.setPreferredWidth(Math.max(headerWidth, cellWidth));
}
}
public Object [][] VerificationPeser(int i) throws IOException
{
int colNo = 4;
int nombreLigne=5;
Object[][] informations = new Object[nombreLigne][colNo]; // On créé un tableau pour chaque ligne de la taille du JTable
for(i=0;i<nombreLigne;i++)
{
int numEchantillon=Balance.RecupererNumEchantillon(i);
int numAiguille=Balance.RecupererNumAiguille(i);
String poids=bufRead.readLine();
poids=poids.replace(" ","");
//String poids="5654";
informations[i][0]=numEchantillon;
informations[i][1]=numAiguille;
informations[i][2]=poids;
informations[i][3]=new Boolean(false);
System.out.println(i);
}
return informations;
}
public Object[][] getResultat(int i) throws IOException
{
Object[][] tableaudesResultats=null;
tableaudesResultats=VerificationPeser(i);
return tableaudesResultats;
}
class MyTableModel extends AbstractTableModel {
private String[] columnNames;
private Object[][] data;
public final Object[] longValues = {"Vosse","Christine",Boolean.TRUE,Boolean.TRUE};
private boolean DEBUG;
public MyTableModel(int i) throws IOException
{
String[] columnNamesResultat={"Num Aiguille","Num Echantillon","Poids","Erreur"};
columnNames=columnNamesResultat;
data=getResultat(i);
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
/*
* JTable uses this method to determine the default renderer/
* editor for each cell. If we didn't implement this method,
* then the last column would contain text ("true"/"false"),
* rather than a check box.
*/
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
/*
* Don't need to implement this method unless your table's
* editable.
*/
public boolean isCellEditable(int row, int col) {
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
if (col < 3) {
return false;
} else {
return true;
}
}
/*
* Don't need to implement this method unless your table's
* data can change.
*/
public void setValueAt(Object value, int row, int col) {
if (DEBUG) {
System.out.println("Setting value at " + row + "," + col
+ " to " + value
+ " (an instance of "
+ value.getClass() + ")");
}
data[row][col] = value;
fireTableCellUpdated(row, col);
if (DEBUG) {
System.out.println("New value of data:");
printDebugData();
}
}
private void printDebugData() {
int numRows = getRowCount();
int numCols = getColumnCount();
for (int i=0; i < numRows; i++) {
System.out.print(" row " + i + ":");
for (int j=0; j < numCols; j++) {
System.out.print(" " + data[i][j]);
}
System.out.println();
}
System.out.println("--------------------------");
}
}
}
et maintenant l'appel
try {
for(int i=0;i<5;i++)
{
Table.setModel(new Tableau(i).laTable.getModel());
}
} catch (IOException ex) {
Logger.getLogger(framePesee1.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchPortException ex) {
Logger.getLogger(framePesee1.class.getName()).log(Level.SEVERE, null, ex);
} catch (PortInUseException ex) {
Logger.getLogger(framePesee1.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedCommOperationException ex) {
Logger.getLogger(framePesee1.class.getName()).log(Level.SEVERE, null, ex);
}
Merci de vouloir m'aider car là ca m'enerve je ne sais pas comment faire!!
Bonne soirée
Christine