ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
668
668
EMPFEHLEN
-
Hallo zusammen,
ich habe ein Problem mit JTable, AbstractTableModel, TableCellRenderer.
Folgendes liegt vor:
Eine JTable mit meinem eigenen AbstractTableModel wird erzeugt, übergeben wird dem Model eine String-Liste mit Pfaden. Das Model erstellt daraus 3 Spalten mit Name, Zeitpunkt der Änderung und Größe.
Code JAVA:1
tblWest = new JFileListTable(new File("./").list());
Die CellRenderer füge ich wie folgt im Konstruktor der JTable auf:
Code JAVA:1 2 3
getColumn("A").setCellRenderer(new MyFileNameTableCellRenderer()); getColumn("B").setCellRenderer(new MyFileDateTableCellRenderer()); getColumn("C").setCellRenderer(new MyFileSizeTableCellRenderer());
Beim Ersten Aufruf, also beim Start des Programmes funktioniert alles, der Renderer arbeitet wie gewünscht! Wenn ich allerdings während der Laufzeit das TableModel verändere werden die Datenänderungen korrekt übernommen, allerding funktioniert der Renderer nicht mehr!
Hier wurde aus einem Textfeld ein Pfad entnommen und dem Model übergeben, das so die neuen Daten generiert.Code JAva:1
((JFileListTableModel) tblWest.getModel()).setNewData((new File(westInput.getText())).list());
WARUM arbeitet der Renderer da nicht mehr korrekt?
Code Java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
package mdi; import javax.swing.JTable; public class JFileListTable extends JTable { public JFileListTable(String[] files) { super(new JFileListTableModel(files)); createDefaultColumnsFromModel(); getColumn("A").setCellRenderer(new MyFileNameTableCellRenderer()); getColumn("B").setCellRenderer(new MyFileDateTableCellRenderer()); getColumn("C").setCellRenderer(new MyFileSizeTableCellRenderer()); } } ========================================================= package mdi; import java.io.File; import java.util.ArrayList; import javax.swing.table.AbstractTableModel; public class JFileListTableModel extends AbstractTableModel { private ArrayList<File> name = new ArrayList<File>(); public JFileListTableModel(String[] files){ super(); setNewData(files); }; public void setNewData(String[] files) { name.clear(); for (int i=0; i<files.length;i++) { name.add(new File(files[i])); } } @Override public int getColumnCount() { return 3; } @Override public int getRowCount() { return name.size(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { return name.get(rowIndex); } } ======================================================= package mdi; import javax.swing.JInternalFrame; import javax.swing.JPanel; import widget.FileChangeEvent; import widget.JFileInputField; import java.awt.*; import java.io.File; public class JInternalDirCompareFrame extends JInternalFrame implements widget.FileChangeListener { private JPanel west = new JPanel(new BorderLayout()); private JPanel east = new JPanel(new BorderLayout()); private widget.JFileInputField westInput = new JFileInputField("o"); private widget.JFileInputField eastInput = new JFileInputField("o"); private JFileListTable tblWest; private JFileListTable tblEast; public JInternalDirCompareFrame() { super("DirCompare"); setLayout(new BorderLayout()); westInput.addFileChangeListener(this); eastInput.addFileChangeListener(this); tblWest = new JFileListTable(new File("./").list()); tblEast = new JFileListTable(new File("./src").list()); west.add(westInput, BorderLayout.NORTH); west.add(tblWest, BorderLayout.SOUTH); east.add(eastInput, BorderLayout.NORTH); east.add(tblEast, BorderLayout.SOUTH); add(west, BorderLayout.WEST); add(east, BorderLayout.EAST); pack(); setVisible(true); } @Override public void fileChanged(FileChangeEvent e) { if (e.getSource() == westInput) { ((JFileListTableModel) tblWest.getModel()).setNewData((new File(westInput.getText())).list()); } else if (e.getSource() == eastInput) { ((JFileListTableModel) tblEast.getModel()).setNewData((new File(eastInput.getText())).list()); } } }
Grüße
Robert
-
Dummer Fehler!
File.list() gibt nur den Datei-/Ordnernamen zurück ohne Pfad!
Der Renderer hat gearbeitet, nur di Datei konnte nicht gefundne werden, da ich mit dem files-Array falch umgegangen bin!
Danke!
Ähnliche Themen
-
Probleme mit TableCellRenderer
Von Genius2 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 23.06.09, 10:50 -
AbstractTableModel und getRowCount
Von ohli im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 16.05.08, 08:55 -
JTable mit AbstractTableModel
Von MariusMeier im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 10.04.08, 17:35 -
AbstractTableModel
Von brunso im Forum JavaAntworten: 21Letzter Beitrag: 16.07.07, 18:57 -
Textdatei auslesen -> Probleme mit Aktualisierung.
Von C4T im Forum PHPAntworten: 11Letzter Beitrag: 19.08.05, 13:02





Zitieren
Login





