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.

InformationsquelleAutor Kaushik Balasubramanain | 2011-09-15

Schreibe einen Kommentar