Hey Leute, die ich meine Aufgabe und jetzt habe ich das Problem mit nicht bearbeitbaren Zellen, tatsächlich wurde es editierbar, aber das Ergebnis der Bearbeitung nicht auf Arraylist eingestellt, habe ich viele versucht Lösung aus dem Internet, aber es funktioniert nicht. Also meine Arbeit wie Registrierungssystem, die Informationen über Gast erhalten, und dann in der CSV-Datei gespeichert. In der zusätzlichen Funktion muss das Programm Anzeige-, Update-, Lösch- und Suchfunktion haben.Wie man Spalten in speziellen abstrakten Modell bearbeitbar machen JTable
Ich beendete alles, ohne zu aktualisieren, zu löschen und zu suchen. Kannst du bitte meinen Code suchen und mir helfen oder den Ratschlag, Link oder etwas Nützliches geben.
das ist mein abstraktes Modell:
public class ddispmodel extends AbstractTableModel {
private final String[] columnNames = { "FirstName", "SecondName", "Date of
birth", "Gender", "Email", "Address", "Number", "Attending","ID" };
private ArrayList<String[]> Data = new ArrayList<String[]>();
private boolean editable;
public void AddCSVData(ArrayList<String[]> DataIn) {
this.Data = DataIn;
this.fireTableDataChanged();
}
@Override
public int getColumnCount() {
return columnNames.length;// length;
}
@Override
public int getRowCount() {
return Data.size();
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
@Override
public Object getValueAt(int row, int col) {
return Data.get(row)[col];
}
public boolean isCellEditable(int row, int col) {
setValueAt(Data, row, col);
this.fireTableCellUpdated(row, col);
return true;
}
}
Dieser Teil meiner Hauptklasse ist Es ist Aktion Listener der Hexenmenüpunkt Funktion aktivieren Anzeige (ich nicht alle Klasse kopiert haben, weil es fast 1000 Linien, aber wenn es nötig, kann ich alle Codes)
dlog.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
CSVFileDomestic Rd = new CSVFileDomestic();
ddispmodel ddispm = new ddispmodel();
ddisp.setModel(ddispm);
File DataFile = new File("D:\\cdne4\\WorkPlace\\Domestic.csv");
ArrayList<String[]> Rs2 = Rd.ReadCSVfile(DataFile);
ddispm.AddCSVData(Rs2);
System.out.println("Rows: " + ddispm.getRowCount());
System.out.println("Cols: " + ddispm.getColumnCount());
cl.show(cp, "dispDomPanel");
}
});
und File-Klasse einreichen, das Datum von csv umwandeln zu Arraylist
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
public class CSVFileDomestic {
private final ArrayList<String[]> Rs = new ArrayList<String[]>();
private String[] OneRow;
public ArrayList<String[]> ReadCSVfile(File DataFile) {
try {
BufferedReader brd = new BufferedReader(new
FileReader(DataFile));
while (brd.ready()) {
String st = brd.readLine();
OneRow = st.split(",");
Rs.add(OneRow);
System.out.println(Arrays.toString(OneRow));
}
}
catch (Exception e) {
String errmsg = e.getMessage();
System.out.println("File not found:" + errmsg);
}
return Rs;
: Ich bin Java und dies ist mein erstes Programm, bitte können Sie erklären, leichter
Vielen Dank für Ihre Antwort, ich versuchte, wie dies vor, und ich erhielt Fehler wie Zeile - ist doppelte Variable und die Methode .get () ist nicht anwendbar für Arraylist –
'row - ist doppelte Variable' - Ja, das ist offensichtlich ein Fehler meinerseits. Nehmen Sie sich Zeit, um das Konzept des Codes zu verstehen und geben Sie der Variablen einen anderen Namen. 'die Methode .get() ist nicht anwendbar für Arraylist' - wenn Sie das erste Problem beheben, sollte das zweite Problem weggehen.Auch wenn "row" eine doppelte Variable ist, weiß der Compiler nicht, wie er die Anweisung auflösen soll, da er nicht weiß, was der richtige Datentyp von "row" ist. – camickr