Hi Leutz.
Ich will ne JTable füllen, verändern, und danach den neuen Inhalt wieder abspeichern.
Irgendwie kann ich jetzt aber die Einträge nicht mehr ändern!
Also ich komme schon in die Zelle rein und kann den Inhalt kurz ändern
doch beim verlassen der Zelle steht wieder das drin was vor der änderung drin stand.
ausserdem wollt ich noch fragen ob man die Anzahl Zeichen die man in eine Zelle eingeben kann beschränken kann.. also 1 Spalte dürfen 5 Zeichen eingegeben werden, 2 Spalte 10 Zeichen usw.
hier mal bisschen code:
aufruf
die Methoden
und die Klasse CreateTableWithColumn
schon mal thx an alle die sichs anschaun
gruss
MScalli
Ich will ne JTable füllen, verändern, und danach den neuen Inhalt wieder abspeichern.
Irgendwie kann ich jetzt aber die Einträge nicht mehr ändern!
Also ich komme schon in die Zelle rein und kann den Inhalt kurz ändern
doch beim verlassen der Zelle steht wieder das drin was vor der änderung drin stand.
ausserdem wollt ich noch fragen ob man die Anzahl Zeichen die man in eine Zelle eingeben kann beschränken kann.. also 1 Spalte dürfen 5 Zeichen eingegeben werden, 2 Spalte 10 Zeichen usw.
hier mal bisschen code:
aufruf
Code:
// Tabelle erstellen und adden
CreateTableWithColumn table_panel = new CreateTableWithColumn(table_x, table_y, getColumnNames(), getData(), getWidthArray());
die Methoden
Code:
private static int[] getWidthArray() {
int[] width_array = {100, 737};
return width_array;
}
private static String[] getColumnNames() {
String[] column_names = { "Schl.",
"Bezeichnung"};
return column_names;
}
private static Object[][] getData() {
Object[][] data = {
{"Spalte 1", "Spalte 2",}
};
return data;
}
und die Klasse CreateTableWithColumn
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumn;
public class CreateTableWithColumn extends JPanel {
private static final long serialVersionUID = -2306289506379055756L;
String[] column_names;
Object[][] data;
public CreateTableWithColumn(int width, int height, String[] _column_names, Object[][] _data, int[] _width_array ) {
super(new BorderLayout());
column_names = _column_names;
data = _data;
JTable table = new JTable(new MyTableModel());
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// Panel erzeugen auf dem alles liegen soll
JPanel panel = new JPanel();
//ScrollPane erzeugen und JTable adden
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(width,height));
//grösse der Zellen setzten
initColumnSizes(table, _width_array);
//JPanel und JScrollPane hinzufügen.
add(panel);
panel.add(scrollPane);
}
/*
* Hier werden die Zellgrössen gesetzt
*/
private void initColumnSizes(JTable table, int[] width_array) {
TableColumn column = null;
for (int i = 0; i < width_array.length; i++) {
column = table.getColumnModel().getColumn(i);
column.setPreferredWidth(width_array[i]);
}
}
class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = -2764611210789334359L;
public int getColumnCount() {
return column_names.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return column_names[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
/*
* JTable benutzt diese Methode um den Default Renderer zu beenden
* sonst würde z.B. ststt CheckBoxen nur (true/false) drin stehen
*/
@SuppressWarnings("unchecked")
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
/*
* Hier kann man bestimmte Zellen editierbar machen
* Beispiel Zelle 0 nicht editierbar machen
* if (col == 0) {
* return false;
* }
*/
public boolean isCellEditable(int row, int col) {
return true;
}
}
}
schon mal thx an alle die sichs anschaun
gruss
MScalli