ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
232
232
EMPFEHLEN
-
Hallöchen,
Kurz und knapp, ich habe ein JTable das ich auch schön durch die AutoSortierMethode sortieren kann.
Die Daten des Tables werden aus einer CSV gelesen und auch wieder hineingeschrieben, das Problme ist nur das die SortierMethode zwar das Optische JTable sortiert aber leider nicht die Reihen Nummern anpasst und so müsste man nach jedem start die Tabelle wieder sortieren da ich sie nach den Nummern ja auch wieder auslese.
Ist es möglich das irgendetwas zu machen das die Daten richtig gespeichert werden und somit die Sortierung behalten bleibt.
Kleine Frage noch als Bonus , ist es möglich Leere Reihe IMMER an das Ende der Table drannzuhängen auch nach der Sortierung.
-
Hallo,
welche Reihennummern meinst du? Woher kommen diese?
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Ich denke die Standart nummern wenn man z.B
Aufruft.Code java:1
table.getValueAt(2,3);
Ich lass mir das JTable bei meiner Speichermethode in ein Vector<Vector> umwandeln da mir das DefaultTableModel diese Methode direkt bereitlegt, von dem hole ich mir dann wie als würde ich aus dem JTable die Werte holen nur mit den Methoden des Vectors die Werte.
Das Problem ist einfach das wohl die Sortierung nur oberflächlich erscheint und die Reihe 3 trozdem Reihe 3 bleibt obwohl sie an der Stelle von Reihe 7 ist.
Ich kann auchmal hier mein Table sowie meine Methode zum Speichern posten, diese sind aber schon etwas spezifischer und haben einen minimal größeren Umfang.
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
private void tableSetData() { String[] columnNames = new String[week.length]; columnNames[0] = "Name"; columnNames[1] = "Projekt"; for(int i = 2; i < columnNames.length; i++){ columnNames[i] = week[i-2]; } //int nTablelength = table.length; String[][] data = new String[0][columnNames.length]; c_initData = InitData.fl; setDtm(new DefaultTableModel(data, columnNames){ /**Eigenes DefaultTableModel um nur Zahlen auf der Tabelle * nach Zeile 2 zu zulassen. */ private static final long serialVersionUID = 1L; @Override public void setValueAt(Object aValue, int row, int col) { // Abbruch wenn der Wert kein Integer ist. if (aValue instanceof Integer) { //Abbruch wenn der Wert nicht zwischen 0 - 100 liegt. int value = ((Integer)aValue).intValue(); if(value < 0 || value > 100){ return; } } // Setze den Wert. super.setValueAt(aValue, row, col); } @Override public Class<?> getColumnClass(int col) { if (col >=2) return Integer.class; else{ return String.class; } } }); Vector<Vector<String>> filler = c_initData.get2DTable(); Vector<String> formatedVector = new Vector<String>(); for(int i = 1; i < filler.size(); i++){ formatedVector = filler.get(i); int z = filler.get(i).size()-1; int gewollteKalenderwoche = c_initData.getWeekNow() + c_initData.getAnzahlWeeks(); // System.out.println(gewollteKalenderwoche); while(z >= gewollteKalenderwoche-1){ formatedVector.remove(z); z--; } int k = c_initData.getWeekNow(); // System.out.println(k); while(k >= 2){ try{ formatedVector.remove(k); }catch(ArrayIndexOutOfBoundsException ex){ } k--; } // System.out.println("Something: "+formatedVector); dtm.addRow(formatedVector); } jTable = new GroupingTable(dtm, 0); jTable.setLayout(null); //c_TableM.save(); jTable.setRowHeight(jTable.getRowHeight()); jTable.setAutoCreateRowSorter(true); jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i = 0; i < dtm.getRowCount(); i++) { jTable.getRowSorter().convertRowIndexToModel(i); } //ComboBoxen werden auf das JTable gelegt. TableColumn tColumnNames = jTable.getColumnModel().getColumn(0); comboBox_names = new JComboBox(); TableColumn tColumnProjekts = jTable.getColumnModel().getColumn(1); comboBox_projekts = new JComboBox(); jTable.addMouseListener(this); //ComboxBox f�r Namen und Projekte werden mit den Namen und Projekten gef�llt. comboBox_names.addItem(""); comboBox_projekts.addItem(""); for(int i = 0; i < namen.length; i++){ comboBox_names.addItem(namen[i]); } for(int i = 0; i < projekt.length; i++){ comboBox_projekts.addItem(projekt[i]); } //CellEditor f�r die ComboBoxen. tColumnNames.setCellEditor(new DefaultCellEditor(comboBox_names)); tColumnProjekts.setCellEditor(new DefaultCellEditor(comboBox_projekts)); // Neuer ColoredTableCellRenderer f�r die Einf�rbung der Tabellen. // DefaultTableCellRenderer renderer = // new CustomTableCellRenderer (); // tColumnNames.setCellRenderer(renderer); // tColumnProjekts.setCellRenderer(renderer); // jTable.setDefaultRenderer(this.getClass(), new CustomTableCellRenderer()); //ModelListener f�r die Tabelle um %te an Zahlen zu erg�nzen getDtm().addTableModelListener(this); //c_TableM.getNotFull(); jTable.setFillsViewportHeight(true); jTable.getTableHeader().setOpaque(true); jTable.getTableHeader().setResizingAllowed(true); for (int i = 0; i < jTable.getColumnCount(); i++) { TableColumn col = jTable.getColumnModel().getColumn(i); col.setPreferredWidth(70); } Dimension size2 = jTable.getPreferredScrollableViewportSize(); jTable.setPreferredScrollableViewportSize (new Dimension(getSize().width, size2.height)); jTable.getTableHeader().setBounds(0, 0, jTable.getPreferredSize().width, 0); jTable.getTableHeader().setReorderingAllowed(false); jScrollPane.setViewportView(jTable); }
Die Initalisierung der Table
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
class GroupingTable extends JTable { /** * */ private static final long serialVersionUID = 1L; private int keyColumn; private Color[] colorModel; private int[] colorIndex; //"Model" zur Speichern der Zeilenfarbe public GroupingTable(TableModel model, int column) { super(model); this.keyColumn = column; colorModel = new Color[] {this.getBackground(), Color.LIGHT_GRAY}; determineColor(); } //tableChanged überschrieben, damit das "Farbenmodel" aktualisiert wird public void tableChanged(TableModelEvent evt) { if (evt.getColumn()==keyColumn) determineColor(); super.tableChanged(evt); } //Methode zum Ermitteln der Zeilenfarbe private void determineColor() { colorIndex = new int[this.getRowCount()]; if (colorIndex.length<=0) return; int colorCount=0; colorIndex[0] = colorCount; for (int row=1; row<this.getRowCount(); row++) { if(this.getValueAt(row, this.convertColumnIndexToView(keyColumn)) != null && this.getValueAt(row, this.convertColumnIndexToView(keyColumn)) .equals(this.getValueAt(row-1, this.convertColumnIndexToView(keyColumn)))) colorIndex[row] = colorCount & 1; else colorIndex[row] = ++colorCount & 1; } } //überschrieben, um die Zeilenfarbe zu setzen. public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = (Component) super.prepareRenderer(renderer, row, column); for (int i=0; i<this.getSelectedRows().length; i++) { if (this.getSelectedRows()[i]==row) return c; } try{ c.setBackground(colorModel[colorIndex[row]]); }catch(ArrayIndexOutOfBoundsException ex){ } return c; } }
Eine bearbeitete Tableklasse zum einfärben der Tabellen.Geändert von Shidan (14.07.11 um 12:26 Uhr)
Ähnliche Themen
-
Initiale Sortierung einer JTable
Von ergin im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 02.02.11, 22:12 -
SWT: Sortierung im Table beibehalten
Von Wookie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 10.08.10, 16:57 -
Sortierung einer JTable
Von Saban im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 10.03.09, 19:31 -
jTable bzw. Sortierung
Von polenben im Forum JavaAntworten: 13Letzter Beitrag: 29.01.08, 13:17 -
JTable - TableModel aus Resultset - Sortierung?
Von silver112 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 04.10.07, 16:11





Zitieren

Login





