Java: Wie zum einfügen von Zeilen(Daten) in JTable explizit, wenn Zeilen eingefügt werden, die von AbstractTableModel
In meiner Anwendung gibt es eine JTable und möchte ich auf Zeile einfügen nach dem erstellen der Tabelle.
Folgenden alle codes sind in den Konstruktor des Frames.
Code:
private TableModel model = new AbstractTableModel(){
String[] columnNames = {"First Name","Last Name","Sport","# of Years","Vegetarian"};
private Object[][] data = {};
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public boolean isCellEditable(int row, int col) {
retuen false;
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
};
table = new JTable(model);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(5, 218, 884, 194);
//now adding this to the frame where I want to show
frame.add(scrollPane);
ich möchte nun Zeilen einfügen oder Daten in die Tabelle. Wie das möglich ist.
Zuvor verwendete ich DefaultTableModel aber wir können nicht isCellEditable und andere Methode, in DefaultTableModel, so dass ich ändern, dass mit dem code oben. Aber in dem obigen code, den ich nicht imstande bin, zum einfügen von Daten (Zeilen) explizit, bitte helfen Sie mir.
InformationsquelleAutor Vinit Vikash | 2012-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie diese, können Sie implementieren andere Methode wie deleteRow(int rowIndex) und insertRowToIndex(int rowIndex, Liste rowData).
Erinnern, nachdem Sie die Daten ändern, müssen Sie, um das Feuer der Tabelle Ereignis, wie fireTableRowsInserted() etc
+1 für die Erweiterung AbstractTableModel für benutzerdefinierte api. Aber: so eine anonyme Klasse macht nicht viel Sinn .. das ist wahrscheinlich das, was @VinitVikash stolpert über 🙂
aktualisiert code, machen Sie es sauber und klar.
apt beantworten, gespeichert meiner Zeit. danke @chenyi1976
funktioniert einfach nicht
InformationsquelleAutor chenyi1976
AbstractTableModel nicht tun, was Sie tun möchten, zu diesem Zweck müssen Sie die Verwendung von DefaultTableModel,
Wenn Sie DefaultTableModel Sie können isCellEditable oder jede andere Methode in der folgenden Weise,
im obigen code werden die Daten String[ ][ ]. Und durch das schreiben über code, den Sie festlegen Zelle editierbar als falsch.
Andere als diese, können Sie auch das laden der Daten in swingworker oder afterwords, wie Sie getan haben könnte.
InformationsquelleAutor Rahul Borkar
@Peter richtig ist +1 verwenden
DefaultTableModel
eher alsAbstractTableModel
, weil IhreAbstractTableModel
verpasst MethodeaddRow();
(und anderen Methoden)Beispiel über AbstractTableModel
InformationsquelleAutor mKorbel
Nur die Erweiterung von
DefaultTableModel
statt, die sich vonAbstractTableModel
sollte den trick tun.InformationsquelleAutor Peter
Ich glaube, Sie brauchen, zu implementieren
setValueAt()
Funktion in Ihrem AbstractTableModel, so dass Sie keine Daten ändern angesichts der position.Werfen Sie einen Blick auf die folgenden tutorials:
http://www.java2s.com/Code/Java/Swing-JFC/TablewithacustomTableModel.htm
http://www.informit.com/articles/article.aspx?p=332278
InformationsquelleAutor Korhan Ozturk