JTable - String und Button in einer Zelle darstellen

Nein, aber dann bin ich ziemlich sicher, dass die Datenhaltung in Kombination mit der getValueAt() nicht korrekt ist.
 
also das ist meine Code och habe alles versucht
Code:
ackage Emsyspack;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class StammdatenEingabe extends AbstractTableModel{
public int getColumnCount(){
return 2;
}
public int getRowCount (){
return 10;
}
public Object getValueAt(int i,int j){
return ("");
}
public boolean isCellEditable ( int i,int j){
return true;
}

public static void main(String args[]){



StammdatenEingabe s1 = new StammdatenEingabe();

JTable table = new JTable(s1);
JFrame frame = new JFrame();

frame.pack();
frame.setVisible(true);
JButton boutton = new JButton("übernehmen");
boutton.setLocation(170,350);
boutton.setSize(150,30);
table.setSize(500,500);
frame.add(boutton);
frame.getContentPane().add(new JScrollPane(table));

}
}
 
Hmm, also aus meiner Sicht liegt da einiges im argen

Zum einen vermisse ich in deinem Model soetwas wie ein Arrray/ArrayList/Vector... in dem deine Stammdaten gespeichert werden.
Zum anderen willst du ja Daten überschreiben/editieren, von daher ist return "" in getValueAt falsch. Eine setValueAt-Methode ist auch notwendig, da du ja Daten entgegennehmen musst.

Grundsätzliches Vorgehen:

Das Model benötigt ein Array oder eine ArrayList/Vector, in dem die Daten gespeichert werden.
Nehmen wir dazu erstmal ein Array, das du dementsprechend aufbaust und mit Leerstrings füllst. Das Array nennen wir ganz einfach data.

Deine GetValueAt-Methode wird jetzt dementsprechend Angepasst, das das entsprechende Datenelement zurückgegeben wird, also:

public Object getValueAt(int i,int j){
return this.data(i,j)
}

Deine setValueAt sieht dann folgendermassen aus:

public void setValueAt(Object obj, int row, int col) {
if (obj != null) {
this.data[row][col] = obj.toString();
}
}


Zusätzlich implementiertst du noch folgendes:

public Class getColumnClass(int col) {
return String.class;
}

Dies gibt an, dass alle alle Spalten Strings enthalten.
Wenn du das bis dahin hinbekommst (und auch verstanden hast) kannst du dich dann mit weiteren Schritten beschäftigen.
 
Zurück