Legen Sie Den Datentyp Der Spalte in JTable
Erstellte ich eine JTable mit einem Tischmodell . Nun basierend auf einer Eingabe, die ich habe, ich will eine Spalte in einem bestimmten Datentyp. Wie mache ich das?
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.AbstractTableModel;
public class MyTableModelTwo extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private Object[][] data;
private String[] columnNames;
public MyTableModelTwo(Object[][] data) {
this.data = data;
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
}
@Override
public Class<?> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
@Override
public boolean isCellEditable(int rowIndes, int columnIndex) {
return true;
}
@Override
public String getColumnName(int index) {
return columnNames[index];
}
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
data[rowIndex][columnIndex] = value;
fireTableCellUpdated(rowIndex, columnIndex);
}
public MyTableModelTwo(String[] columnNames, Object[][] data) {
this.columnNames = columnNames;
this.data = data;
}
}
class MyTableTwo extends JPanel implements TableModelListener {
private static final long serialVersionUID = 1L;
private JTable table;
private Object[][] data;
private JTextField t;
public MyTableTwo(int noElements, String[] columnNames) {
data = new Object[noElements][columnNames.length];
t = new JTextField();
MyTableModelTwo m = new MyTableModelTwo(columnNames, data);
table = new JTable(m);
table.getModel().addTableModelListener(this);
setLayout(new GridLayout(1, 0));
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
@Override
public void tableChanged(TableModelEvent e) {
}
public JTextField returnT6() {
return t;
}
}
Sie möchten ändern Sie die Spalte Typ dynamisch?
ja. Ich habe einen string, der sagt, sollte die Spalte speichern nur ganze zahlen. download.oracle.com/javase/tutorial/uiswing/components/.... Hier hat er die Spalte data as boolean in die Daten selbst. Ich will zu tun es dynamisch
was meinst du mit "machen"? Ihre Implementierung liefert die Klasse des Inhalts, so füllen Sie die Spalte mit int-Werten und glücklich sein 🙂
eigentlich denke ich, dass es ein Missverständnis über die Bedeutung von "dynamisch" - glaube nicht, dass Sie möchten, um Wandel der Typ während der Laufzeit des Modells, das wäre äußerst ungewöhnlich und wahrscheinlich starten Sie den design-Wecker Klingeln 🙂
es tut mir Leid, ich war nicht klar. es müssen nicht-integer-Typ nur. alle Daten, die ich bekomme, ändere ich es auf diese Art.
ja. Ich habe einen string, der sagt, sollte die Spalte speichern nur ganze zahlen. download.oracle.com/javase/tutorial/uiswing/components/.... Hier hat er die Spalte data as boolean in die Daten selbst. Ich will zu tun es dynamisch
was meinst du mit "machen"? Ihre Implementierung liefert die Klasse des Inhalts, so füllen Sie die Spalte mit int-Werten und glücklich sein 🙂
eigentlich denke ich, dass es ein Missverständnis über die Bedeutung von "dynamisch" - glaube nicht, dass Sie möchten, um Wandel der Typ während der Laufzeit des Modells, das wäre äußerst ungewöhnlich und wahrscheinlich starten Sie den design-Wecker Klingeln 🙂
es tut mir Leid, ich war nicht klar. es müssen nicht-integer-Typ nur. alle Daten, die ich bekomme, ändere ich es auf diese Art.
InformationsquelleAutor Kaushik Balasubramanain | 2011-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
diesen public Class getColumnClass(int Spalte) {...
bitte meine Frage, warum Sie dort gebraucht AbstractModel, für Gründe, warum, wirklich, was willst du restict/mofify/ändern/überschreiben, (
you can prety ignore this == be sure that not really not good way to start to playing with anything for JTable based on AbstractTableModel
), aber ... überlegen Sie mit DefalutTableModel eher als AbstractTableModel1) für Java6 wird in den meisten Fällen erforderlich für die ordnungsgemäße Nutzung von diesen anotations sehen, Bearbeiten Sie Ihre post 2)
Can i Change it now?
jaInformationsquelleAutor mKorbel
Ich stehe korrigiert, aber ich glaube nicht, dass die Spalten (oder Zellen, sondern) in JTable haben jede Vorstellung von Datentypen. Sie sind am besten zu überprüfen, die für die erwartete ganze Zahl und wirft andernfalls eine exception. Eg:
InformationsquelleAutor raven