Hallo Leute,
ich bin im Moment dabei eine Klasse zuschreiben, welche dynamisch eine JTable anpassen kann dazu habe ich hier im Forum folgende Klassen gefunden:
Diese beiden Klassen rufe ich wie folgt auf:
Das funktioniert auch fast perferkt.
Die erste Spalte wird leider nicht angezeigt und ich kann mir nicht erklären wieso ...
ich bin im Moment dabei eine Klasse zuschreiben, welche dynamisch eine JTable anpassen kann dazu habe ich hier im Forum folgende Klassen gefunden:
Code:
public class TableTestRow
{
private String m_sVorname;
private String m_sNachname;
private String m_sStrasse;
/**
* Konstruktor
*
*/
TableTestRow()
{
}
/**
* Konstruktor
*
*/
TableTestRow( String nachname,
String vorname,
String strasse)
{
this.m_sVorname = vorname;
this.m_sNachname = nachname;
this.m_sStrasse = strasse;
}
/**
* @return
*/
public String getNachname()
{
return m_sNachname;
}
/**
* @return
*/
public String getStrasse()
{
return m_sStrasse;
}
/**
* @return
*/
public String getVorname()
{
return m_sVorname;
}
/**
* @param string
*/
public void setNachname(String string)
{
m_sNachname = string;
}
/**
* @param string
*/
public void setStrasse(String string)
{
m_sStrasse = string;
}
/**
* @param string
*/
public void setVorname(String string)
{
m_sVorname = string;
}
/**
* Gibt den anzuzeigenden Zelleninhalt aus
*
* @param columnIndex Die relevante Spalte
* @return Der anzuzeigende Zellinhalt als Object
*/
public Object getValueAt(int columnIndex)
{
switch (columnIndex)
{
case 1 :
return ( this.getVorname() );
case 2 :
return ( this.getNachname() );
case 3 :
return ( this.getStrasse() );
default :
return null;
}
}
}
Code:
public class TableTestTableModel extends DefaultTableModel
{
private static final long serialVersionUID = -5878188384164466059L;
private String[] columnNames =
{ "IP",
"User",
"Letzte Aktivität"
};
TableTestTableModel()
{
super();
}
public boolean isCellEditable(int row, int column) {
return false;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getColumnCount()
*/
public int getColumnCount()
{
return columnNames.length;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getColumnName(int)
*/
public String getColumnName(int col)
{
return columnNames[ col ];
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount()
{
return getRows().size();
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
public Object getValueAt(int rowIndex, int columnIndex)
{
Object objRet = null;
try
{
objRet =
((TableTestRow) getRows().get(rowIndex)).getValueAt(columnIndex);
}
catch (Exception except)
{
}
return (objRet);
}
/**
* Liefert eine Zeile zurück
* @param row der Index der Zeile
* @return die Zeile
*/
private TableTestRow getRow(int row)
{
return (TableTestRow) getRows().get(row);
}
/**
* Die Zeilen des Modells
*/
private List<TableTestRow> rows;
/**
* @return
*/
public List<TableTestRow> getRows()
{
if (rows == null)
{
rows = new ArrayList<TableTestRow>();
}
return rows;
}
/**
* Fügt eine neue Tabellenzeile hinzu
*
* @param newRow
*/
public void addRow(TableTestRow newRow)
{
getRows().add(newRow);
fireTableDataChanged();
}
}
Diese beiden Klassen rufe ich wie folgt auf:
Code:
tabModel = new TableTestTableModel();
for (int i = 0; i < 10; i++)
tabModel.addRow(new TableTestRow("lala2016846466543848713L", "lala22016846466543848713L", "lala32016846466543848713L"));
clients = new JTable(tabModel);
clients.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
clients.setCellSelectionEnabled(false);
clients.setColumnSelectionAllowed(false);
clients.setRowSelectionAllowed(true);
Das funktioniert auch fast perferkt.
Die erste Spalte wird leider nicht angezeigt und ich kann mir nicht erklären wieso ...