Die Art und Weise, dies zu tun Ihre eigenen TableModel
und überschreiben die public boolean isCellEditable(int rowIndex, int columnIndex);
zu haben wäre. Als Faustregel sollten wir eine JTable
Methode nicht überschreiben. Zu Ihrer Information ist das, was JTable tut - Teilnehmer den Anruf an das Datenmodell:
public boolean isCellEditable(int row, int column) {
return getModel().isCellEditable(convertRowIndexToModel(row),
convertColumnIndexToModel(column));
}
Die Art, wie wir es tun, ist: Schritt 1: Tischmodell erstellen:
public class SimpleTableModel extends DefaultTableModel {
@Override
boolean isCellEditable(int row, int col) {
// Your logic goes here
}
}
Schritt 2 : JTable
JTable table = new JTable (new SimpleTableModel());
an den Konstruktor eine Instanz dieser Klasse Pass ein funktionierendes Beispiel unten finden Sie (das ich schreibe in der Regel Code nicht der richtige Weg ist und Sie noch sollte aber nur um Ihnen ein Beispiel zu geben):
static class Table extends JFrame {
public Table() {
String[] columns = new String[] {
"Id", "Name", "Hourly Rate", "Part Time"
};
//actual data for the table in a 2d array
Object[][] data = new Object[][] {
{1, "John", 40.0, false },
{2, "Rambo", 70.0, false },
{3, "Zorro", 60.0, true },
};
TableModel m = new AbstractTableModel() {
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public int getColumnCount() {
return data[0].length;
}
@Override
public boolean isCellEditable (int row, int col) {
return false;
}
};
//create table with data
JTable table = new JTable(m);
//add the table to the frame
this.add(new JScrollPane(table));
this.pack();
this.setVisible(true);
}
}
Das wird nicht kompilieren. Gibt es "column == 3" (true) oder "false" (false) zurück. Versuchen Sie "Return column == 3? False: true;" – Stefan
Oder einfach 'Spalte zurück! = 3;'. – Kayaman
Ich habe das auch gesehen, aber wie kann ich es direkt auf meine vorhandene jtable anwenden? Wenn ich die Codes verwende, die ich gepostet habe, scheint es mir, dass es eine neue Tabelle erstellt und es mein vorhandenes JTable genauso belässt wie es ist. Bitte ertragen Sie mich, denn ich bin immer noch ein Neuling, wenn es darum geht. Vielen Dank! – joppiealiw