Hallo,
ich habe euer sehr gutes Tutorial über JTable gelesen. Nun wollte ich natürlich das für mein eigenes Projekt nutzen. Ich möchte gern die Checkbox an manchen stellen ausblenden, wenn die Spalte den Typ Boolean hat. Folgenden Code habe ich:
Stört euch nicht daran, daß es so erst mal keinen Sinn ergibt alle Checkboxen mit einem JLabel("Hallo") zu überschreiben. Es ist nur ein Test, und soll später nur auf einzelne Zellen angewant werden. Und zwar mit einem leeren JLabel(""). Das Ziel ist es an bestimmten Stellen die Checkbox einfach auszublenden.
Er blendet mir aber nichts weg. Alle Checkboxen bleiben. Im Tutorial funktioniert es. nur finde ich den Unterschied nicht. dort werden die Checkboxen durch yes oder no überschrieben (
http://www.java-forum.org/de/viewtopic.php?t=7708 )
Oder gibt es vielleicht noch einen anderen Weg die Checkboxen auszublenden?
Hier noch mein TableModel:
Vielen Dank schon mal im vorraus.
ich habe euer sehr gutes Tutorial über JTable gelesen. Nun wollte ich natürlich das für mein eigenes Projekt nutzen. Ich möchte gern die Checkbox an manchen stellen ausblenden, wenn die Spalte den Typ Boolean hat. Folgenden Code habe ich:
Code:
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
if(value instanceof Boolean)
{
JLabel lbl = new JLabel("Hallo");
return lbl;
}
return new JLabel(value.toString());
}
Er blendet mir aber nichts weg. Alle Checkboxen bleiben. Im Tutorial funktioniert es. nur finde ich den Unterschied nicht. dort werden die Checkboxen durch yes oder no überschrieben (
http://www.java-forum.org/de/viewtopic.php?t=7708 )
Oder gibt es vielleicht noch einen anderen Weg die Checkboxen auszublenden?
Hier noch mein TableModel:
Code:
public class JCheckboxTableModel extends AbstractTableModel
{
String [] fileNames;
String [] fullPath;
boolean [] toDownload;
int [] positions;
/**
* @param fileNames
* @param fullPath
* @param toDownload
* @param positions
*/
public JCheckboxTableModel(String[] fileNames, String[] fullPath,
boolean[] toDownload, int[] positions)
{
super();
this.fileNames = fileNames;
this.fullPath = fullPath;
this.toDownload = toDownload;
this.positions = positions;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getColumnCount()
*/
public int getColumnCount()
{
return 3;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount()
{
return fileNames.length;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
public Object getValueAt(int rowIndex, int columnIndex)
{
switch( columnIndex )
{
case 0: if(fileNames[ rowIndex ] != null && rowIndex < fileNames.length)
return new String(fileNames[ rowIndex ]); break;
case 1: if(rowIndex < toDownload.length)
return new Boolean( toDownload[ rowIndex ] ); break;
case 2: if(fullPath[ rowIndex ] != null && rowIndex < fullPath.length)
return new String(fullPath[ rowIndex ]); break;
default: return null;
}
return null;
}
// Eine Angabe, welchen Typ von Objekten in den Columns angezeigt werden soll
public Class getColumnClass(int columnIndex) {
switch( columnIndex ){
case 0: return String.class;
case 1: return Boolean.class;
case 2: return String.class;
default: return null;
}
}
// nur die 2. Spalte darf editiert werden
public boolean isCellEditable(int rowIndex, int columnIndex)
{
if(columnIndex == 1)
return true;
else
return false;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
*/
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
switch( columnIndex )
{
case 0: if(fileNames[ rowIndex ] != null && rowIndex < fileNames.length)
fileNames[ rowIndex ] = ((String )aValue).toString(); break;
case 1: if(rowIndex < toDownload.length)
toDownload[ rowIndex ] = ((Boolean)aValue).booleanValue(); break;
case 2: if(fullPath[ rowIndex ] != null && rowIndex < fullPath.length)
fullPath[ rowIndex ] = ((String )aValue).toString(); break;
default: return;
}
}
// Die Titel der einzelnen Columns
public String getColumnName(int column) {
switch( column ){
case 0: return "FileName";
case 1: return "Download?";
case 2: return "komplette Adresse";
default: return null;
}
}
}
Vielen Dank schon mal im vorraus.