TableModel + Daten bearbeiten + Daten zurückschreiben

Status
Nicht offen für weitere Antworten.

Dutch_OnE

Mitglied
Zunächst möchte ich erstmal allen Beteiligten ein großes Lob für Ihre Hilfe in meinen Threads aussprechen.

Mitlerweile bin ich auch ein ganzes Stück weitergekommen. Nun habe ich aber noch zwei letzte Fragen:

So sieht meine Tabelle aus. Die Spalte Menge ist editierbar.

2.PNG


Der Quellcode:

Code:
public class TabNeuesAngebot extends JFrame {

	private boolean DEBUG = false;
	private static final long serialVersionUID = -7683083478209677885L;
	static JPanel tabelle;

	public TabNeuesAngebot() throws Exception {

		super("ausgewählte Artikel");

		JTable table = new JTable(new MyTableModel());

		tabelle = new JPanel(new FlowLayout());
		tabelle.add(new JScrollPane(table), BorderLayout.CENTER);

		Container cp = getContentPane();

		cp.add(tabelle);
		setSize(800, 350);
		setVisible(true);
	}
	
	

	class MyTableModel extends AbstractTableModel {

		private String[] columnNames = { "Position", "ArtikelNr",
				"Bezeichnung", "Einheit", "Menge", "Einzelpreis", "Gesamtpreis" };

		private Object[][] data = UtilAngebot.getAlleAngbtPosTmpTab();

		public boolean isCellEditable(int row, int col) {
			if (col == 4) {
				return true;
			} else {
				return false;
			}
		}

		@Override
		public int getColumnCount() {
			return columnNames.length;
		}

		@Override
		public int getRowCount() {
			return data.length;
		}
		
		public String getColumnName(int col){
			return columnNames[col];
		}

		@Override
		public Object getValueAt(int row, int col) {
			return data[row][col];
		}
		
	    public void setValueAt(Object value, int row, int col) {
	        data[row][col] = value;
	        fireTableCellUpdated(row, col);
	    }


		public void setValueAt(String value, int row, int col) {
			if (DEBUG) {
				System.out.println("Setting value at " + row + "," + col
						+ " to " + value + " (an instance of "
						+ value.getClass() + ")");
			}

			data[row][col] = value;
			fireTableCellUpdated(row, col);

		}

		public MyTableModel() throws Exception {
			super();
			// TODO Auto-generated constructor stub
		}

	}

}

Fragen:
Ich bekomme die Daten aus einem String[][]. Wenn ich die Menge ändere, soll sich auch der Gesamtpreis sowie das String[][] ändern.

Die Menge kann ich wie gesagt editieren, nur wie ändere ich dann automatisch eine 2te Zelle ? Diese Änderung soll danach ins String[][] geschrieben werden.

Kann mir jemand nen Tipp dazu geben ?
 
M

Michael...

Gast
Einfach einen TableModelListener an das TableModel dranhängen.
Wenn in der 4. Spalte was geändert wurde -->
Inhalt der Zelle in Spalte 4 in ein double umwandeln Inhalt der Zelle in Spalte 5 in ein double umwandeln, miteinander multiplizieren und das Ergebnis dann in data[row][6] schreiben.
 

Dutch_OnE

Mitglied
Code:
	class MyTableModel extends AbstractTableModel implements TableModelListener {

Habe das nun eingegben und musste danach folgenden Methode implementieren:

Code:
		@Override
		public void tableChanged(TableModelEvent arg0) {
			
		}

Ist das soweit richtig ?
 

Dutch_OnE

Mitglied
Nun habe ich folgendes ausprobiert:

Code:
public void setValueAt(Object value, int row, int col) {
			Boolean proof = false;
			try {
				wert = Float.parseFloat((String) value);
				proof = true;
			} catch (Exception e) {
			}

			if (proof == true) {
				wert = Math.round((float) (wert * 10)) / 10f;
				System.out.println(wert);
				String wertAuf = wert + "";
				data[row][col] = wertAuf;
				
				String preis = (String) data[row][5];
				String preisUmw = preis.substring(0, (preis.length()-2));
				Float preisAuf = Float.parseFloat(preisUmw);
				
				float gesamt = preisAuf * wert;
				gesamt = Math.round((float) (gesamt * 100)) / 100f;
				String gesamtAuf = gesamt + " €";
				
				data[row][6] = gesamtAuf;
								
				fireTableCellUpdated(row, col);
			}

Wenn ich nun den Wert für menge ändere und danach auf die Zelle Gesamt klicke, wird der Wert dort ausgerechnet.

Frage: Was macht der TableModelListener ? Gibts ne Möglichkeit, das Gesamt gleich bei der Eingabe von menge aktualisiert wird ?
 
M

Michael...

Gast
der TableModelListener reagiert auch erst nachdem der "Editiermodus" der Zelle beendet wurde.
Wenn mit "gleich bei der Eingabe" gemeint ist, dass das Ergebnis nach jedem Tastendruck aktualisiert wird, dann wird das ganze etwas komplizierter.
Dann muss man wohl der Spalte Menge einen eigenen TableCellEditor zuweisen und an diesen einen KeyListener dranhängen.
 
M

Michael...

Gast
Da die Berechnung ja in der Methode setValue() gemacht wird, braucht man den Listener nicht.
 

Dutch_OnE

Mitglied
Das habe ich mir fast schon gedacht. Durch das fireTableCellUpdated(row, col) wird alles die Tabelle aktualisiert.
Mit dem Listener kann ich dann sicherlich andere nette Aktionen auffangen und Events auslösen.

Auf jeden Fall kann ich mit der Lösung leben und sage erstmal vielen Dank.
Dementsprechend muss ich nun noch meinen Vektor, wo ich die Daten her habe, aktualisieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
K TableModel Daten übergeben AWT, Swing, JavaFX & SWT 9
X Swing Daten aus Vector ins TableModel ?? AWT, Swing, JavaFX & SWT 12
S Daten aus editierbaren TableModel lesen AWT, Swing, JavaFX & SWT 7
C TableModel zugehörige Table ermitteln AWT, Swing, JavaFX & SWT 3
E Eigenes TableModel für ArrayList<String[]> AWT, Swing, JavaFX & SWT 5
W Neues TableModel und JTable wird nicht refreshed AWT, Swing, JavaFX & SWT 3
D Swing JTable TableModel + RowCount AWT, Swing, JavaFX & SWT 18
JAVAnnik Problem mit TableModel AWT, Swing, JavaFX & SWT 3
S Swing Setzen von TableModel liefert NullPointer AWT, Swing, JavaFX & SWT 6
S TableModel Header wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
K verständnissproblem mit TableModel AWT, Swing, JavaFX & SWT 2
K zwei TableModel AWT, Swing, JavaFX & SWT 9
N Swing Eintrag in JTable an dessen TableModel weiterreichen AWT, Swing, JavaFX & SWT 3
hdi Swing Komisches Problem mit TableModel & setAutoCreateRowSorter AWT, Swing, JavaFX & SWT 2
E Swing TableModel fireTableDataChanged führt zu IndexOutOfBoundsException AWT, Swing, JavaFX & SWT 9
F Tablemodel zu mehreren Tabellen AWT, Swing, JavaFX & SWT 6
K JTable +TableModel --> Anpassung der Tabellengröße (Zeilenanzahl) AWT, Swing, JavaFX & SWT 3
L Klick auf JTable -> EditorPane manipulieren, Fragen zu TableModel AWT, Swing, JavaFX & SWT 9
E JTable und tablemodel Verständnisproblem AWT, Swing, JavaFX & SWT 3
C Kann Konstruktor von eigenem TableModel nicht nutzen AWT, Swing, JavaFX & SWT 2
D eigenes Tablemodel, Zeile löschen ArrayindexOOB excp AWT, Swing, JavaFX & SWT 4
P Eigenes TableModel abgeleitet von AbstractTableModel (neue rows nicht sichtbar) AWT, Swing, JavaFX & SWT 6
S Table oder TableModel so ueberschreiben, dass Columns minimale Breite haben? AWT, Swing, JavaFX & SWT 2
R JTable - TableModel AWT, Swing, JavaFX & SWT 6
D JTable - TableColumnModel - TableModel AWT, Swing, JavaFX & SWT 3
S JTable nimmt TableModel nicht an AWT, Swing, JavaFX & SWT 4
D Mehrere CheckBoxen im TableModel wechselseitig ausschließen AWT, Swing, JavaFX & SWT 5
R TableModel und Columnmodel - Zusammenspiel? AWT, Swing, JavaFX & SWT 2
G TableModel mit anderen Spalten AWT, Swing, JavaFX & SWT 4
G JTable - TableModel aus ArrayList AWT, Swing, JavaFX & SWT 8
A JTable, eigenes TableModel und dessen Objekte AWT, Swing, JavaFX & SWT 4
G Frage zu JTable und TableModel AWT, Swing, JavaFX & SWT 4
O TableModel AWT, Swing, JavaFX & SWT 12
V Vector->TableModel->RowSorter:Bei Markierung Index im AWT, Swing, JavaFX & SWT 2
F TableModel Spaltenkoepfe benamen, wie? AWT, Swing, JavaFX & SWT 2
F Wie MouseListener bei TableModel anmelden? AWT, Swing, JavaFX & SWT 3
G JTable, TableModel und CellRenderer AWT, Swing, JavaFX & SWT 3
R DataVector bei TableModel - Class Cast Exception AWT, Swing, JavaFX & SWT 9
N TableModel mit CheckBox? AWT, Swing, JavaFX & SWT 5
J Tablemodel AWT, Swing, JavaFX & SWT 2
G jTable + ScrollPane (+ TableModel) AWT, Swing, JavaFX & SWT 7
D invokeLate bei änderung im TableModel? AWT, Swing, JavaFX & SWT 4
G TableModel von JTable wieder entfernen AWT, Swing, JavaFX & SWT 10
G TableModel auswerten und in Datei schreiben AWT, Swing, JavaFX & SWT 3
P JTable TableModel JFreeReport AWT, Swing, JavaFX & SWT 4
T anlegen einer jTable mit TableModel AWT, Swing, JavaFX & SWT 3
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
W Daten von Controller zu Controller übertragen AWT, Swing, JavaFX & SWT 7
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
T Anbinden der Tabelle an die Daten AWT, Swing, JavaFX & SWT 5
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
B AWT Bot um Daten auf Website einzugeben und die Antwort zu bekommen AWT, Swing, JavaFX & SWT 2
L Daten bearbeiten ohne GUI zu blockieren - daten haltung/zurück geben AWT, Swing, JavaFX & SWT 15
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
ralfb1105 Swing Dynamischer Graph zum anzeigen Perfomance Daten AWT, Swing, JavaFX & SWT 35
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
K TreeTableView (cellFactory) - wie Daten in Spalten einfügen AWT, Swing, JavaFX & SWT 0
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
T JavaFX Model Daten übergeben AWT, Swing, JavaFX & SWT 4
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Daten an WebView Komponente AWT, Swing, JavaFX & SWT 1
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
M Java FX Daten an Controller übergeben AWT, Swing, JavaFX & SWT 3
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
D Applet GWT speichert Daten nicht in Datenbank AWT, Swing, JavaFX & SWT 2
S SWT In Listen den Einträgen Daten zuordnen AWT, Swing, JavaFX & SWT 2
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
F Swing JTable: Daten voreinstellen AWT, Swing, JavaFX & SWT 4
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
D SWT TreeViewer: Daten aus Model gelöscht... trotzdem noch im Baum AWT, Swing, JavaFX & SWT 4
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
M Swing Daten von JPanel zu JFrame senden AWT, Swing, JavaFX & SWT 13
C Swing JTable Daten einfügen AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben