JTable adding Row

frosty

Mitglied
Hallo zusammen,

habe ein Problem mit meiner JTable und den hinzufügen eines Objektes...
Unzwar möchte ich aus meiner einen Klasse WorkConfig die Daten aus dem JTextField auslesen und an die Klasse WorkTable weitergeben und hinzufügen
Hier meine WorkConfig
Java:
public class WorkConfig extends JPanel{

	JCheckBox ja, nein;
	
	final public static JTextField tfdCompany = new JTextField();
	final public static JFormattedTextField tfdCost = new JFormattedTextField( NumberFormat.getCurrencyInstance());
	final public static JFormattedTextField tfdDate = new JFormattedTextField(new Date());
	final public JLabel lbKosten = new JLabel("0");
	final public static JCheckBox yes = new JCheckBox("Ja");
	
	final public JButton btnAdd = new JButton ("hinzufügen");
	final public JButton btnDelete = new JButton("löschen");
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -8912567725873559551L;
		public static WorkState workState = new WorkState();
		public static WorkTable table = new WorkTable();

	public WorkConfig(){
		createGui();
		
	}

	private void createGui() {
		
		// TODO Auto-generated method stub
		this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
	
		//create configPanel
		JPanel pnlConfig = new JPanel();
	    pnlConfig.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Konfiguration"));		
	    pnlConfig.setLayout(new GridLayout(2,2));
	    pnlConfig.add(new JLabel("Unternehmen: "));
	    pnlConfig.add(tfdCompany);
	    
	    tfdCompany.setFont(new Font("Dialog", 0, 15));
	    pnlConfig.add(new JLabel("gleich: "));
	    pnlConfig.add(yes);
	 
	   pnlConfig.setMinimumSize(new Dimension(300,300));
	   pnlConfig.setMaximumSize(new Dimension(300,100));
	   pnlConfig.setPreferredSize(new Dimension(300,100));
		this.add(pnlConfig);
		
		// create costPanel
		JPanel costConfig = new JPanel();
	    costConfig.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Kosten"));		
	    costConfig.setLayout(new GridLayout(0,2));
	    costConfig.add(new JLabel("Kosten: "));;
	    tfdCost.setValue(0);
	    costConfig.add(tfdCost);
	    tfdCost.setFont(new Font("Dialog",0,15));
	    costConfig.setMinimumSize(new Dimension(300,75));
	    costConfig.setMaximumSize(new Dimension(300,75));
	    costConfig.setPreferredSize(new Dimension(300,75));
		this.add(costConfig);
		
		//create datePanel
		JPanel dateConfig = new JPanel();
	    dateConfig.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Datum"));		
	    dateConfig.setLayout(new GridLayout(0,2));
	    dateConfig.add(new JLabel("Datum: "));;
	    dateConfig.add(tfdDate);
		dateConfig.setMinimumSize(new Dimension(300,75));
		dateConfig.setMaximumSize(new Dimension(300,75));
		dateConfig.setPreferredSize(new Dimension(300,75)); 
		this.add(dateConfig);
		
		//create buttonPanel
		 JPanel buttonConfig = new JPanel();
	     buttonConfig.setLayout(new GridLayout(0,2));
	     buttonConfig.add(btnAdd);;
	     btnAdd.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				try {
					checkConfig();
					
					addCompany();
				}catch (WorkConfigException ice) {
						JOptionPane.showMessageDialog(null, ice.getMessage(), "Fehler bei der Eingabe:", JOptionPane.ERROR_MESSAGE);

				}
			}    	
	    });
	    buttonConfig.add(btnDelete);
	    btnDelete.addActionListener(new ActionListener(){

				@Override
				public void actionPerformed(ActionEvent arg0) {
					// TODO Auto-generated method stub
					System.out.println("button click");
				}
		    	
		    });
	    buttonConfig.setMinimumSize(new Dimension(300,75));
	    buttonConfig.setMaximumSize(new Dimension(300,75));
	    buttonConfig.setPreferredSize(new Dimension(300,75));
		   
		   
		this.add(buttonConfig);
		
		//create allPanel
		JPanel allConfig = new JPanel();
	    allConfig.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Übersicht"));		
	    allConfig.setLayout(new BorderLayout());
	    allConfig.add(new JLabel("Gesamtkosten: "),BorderLayout.WEST);
	    allConfig.add(lbKosten, BorderLayout.CENTER);
	    this.add(allConfig);
	
	}


	
	public static void checkConfig() throws WorkConfigException {
		if ( tfdCompany.getText().isEmpty()){
			throw new WorkConfigException("Bitte tragen Sie ein Unternehmen ein!");
		}
		
		if (tfdCost.getValue().equals(0) ){
			throw new WorkConfigException("Bitte kontrollieren Sie die Eingabe der Kosten!");
		}
		String time = new SimpleDateFormat("dd.MM.yyyy").format(new Date());
		if (tfdDate.getText().equals(time)){
			throw new WorkConfigException("Bitte tragen Sie ein anderes Datum ein!");
		}
		
	}
	
	public static void addCompany(){
		String name = tfdCompany.getText();
		String date = tfdDate.getText();
		String cost = tfdCost.getText();

		Unternehmen neu = new Unternehmen(name,date,cost);
		workState.addCompany(neu);
		table.addToTable(neu);
		
	}


	
}
und meine Work
Java:
public class WorkTable extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2053446323153016974L;

	final String[] columnNames = {"Firma", "Datum", "Kosten"};
	public DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
	public JTable table = new JTable(tableModel);
	
	public WorkTable(){
		createGui();
	}


	private void createGui() {
		table.setEnabled(false);
		JScrollPane pane = new JScrollPane(table);
		setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Unternehmen"));
		setLayout(new BorderLayout());
		add(pane, BorderLayout.CENTER);
		
		// TODO Auto-generated method stub
		
	}

	
	public void addToTable(Unternehmen u){
		String name = u.name;
		String cost = u.cost;
		String date = u.date;
		
		tableModel.addRow(new Object[]{name,date,cost});
		
	}
			
}
Table
 

Flown

Administrator
Mitarbeiter
Jetzt mal so pauschal gesagt, sieht doch gut aus was du da fabriziert hast. Wo liegt denn das Problem?
 

frosty

Mitglied
Hey
unzwar möchte ich dem Table etwas hinzufügen.

1. Button löst ein ActionEvent aus (das funktioniert auch)
2. die Methode actionPerformed soll dann die Methode addCompany ausführen (funktioniert auch)
3. die Mehtode addCompany soll dann die einzelnen TextFields auslesen, eine neue Company erstellen und in die Table hinzufügen
1. die Company erstellen (klappt auch)
2. die Company in die Table hinzufügen(klappt auch [lasse mir dafür die Anzahl nach jeder Änderung anzeigen])
3. die Table mit den neuen Werten angezeigt (klappt nicht)

Jedoch weiß ich nicht wie ich das lösen soll...
Habe es mit repaint() und tableModel.fireDataChanged(); schon probiert - ohne erfolg...
 

Flown

Administrator
Mitarbeiter
Also ich hab mir gerade aus deinen Codesnippets ein KSKB zusammengebastelt und es funktioniert tadellos. Das Problem was ich sehe ist eventuell, dass du zwei Instanzen von WorkTable verwendest und deshalb der Grund ist, warum die Table nicht aktualisiert wird.
 

Flown

Administrator
Mitarbeiter
So ich hab dir das mal zusammenkopiert und kannst dann selbst schauen wie du "eine und nur eine" Instanz von deinem table Element verwendest. Ich hab auch viele static Sachen verändert (du solltest dir auch nocheinmal durchlesen was static eigentlich macht).

Java:
package table;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class WorkMain {
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> new WorkMain());
	}
	
	public WorkMain() {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.add(new WorkConfig());
		
		frame.pack();
		frame.setVisible(true);
	}
	
	public class WorkConfig extends JPanel {

		JCheckBox ja, nein;

		final public JTextField tfdCompany = new JTextField();
		final public JFormattedTextField tfdCost = new JFormattedTextField(
				NumberFormat.getCurrencyInstance());
		final public JFormattedTextField tfdDate = new JFormattedTextField(
				new Date());
		final public JLabel lbKosten = new JLabel("0");
		final public JCheckBox yes = new JCheckBox("Ja");

		final public JButton btnAdd = new JButton("hinzufügen");
		final public JButton btnDelete = new JButton("löschen");

		private static final long serialVersionUID = -8912567725873559551L;
		public WorkTable table = new WorkTable();

		public WorkConfig() {
			createGui();
		}

		private void createGui() {

			this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

			// create configPanel
			JPanel pnlConfig = new JPanel();
			pnlConfig.setBorder(BorderFactory.createTitledBorder(
					BorderFactory.createEtchedBorder(), "Konfiguration"));
			pnlConfig.setLayout(new GridLayout(2, 2));
			pnlConfig.add(new JLabel("Unternehmen: "));
			pnlConfig.add(tfdCompany);

			tfdCompany.setFont(new Font("Dialog", 0, 15));
			pnlConfig.add(new JLabel("gleich: "));
			pnlConfig.add(yes);

			pnlConfig.setMinimumSize(new Dimension(300, 300));
			pnlConfig.setMaximumSize(new Dimension(300, 100));
			pnlConfig.setPreferredSize(new Dimension(300, 100));
			this.add(pnlConfig);

			// create costPanel
			JPanel costConfig = new JPanel();
			costConfig.setBorder(BorderFactory.createTitledBorder(
					BorderFactory.createEtchedBorder(), "Kosten"));
			costConfig.setLayout(new GridLayout(0, 2));
			costConfig.add(new JLabel("Kosten: "));
			;
			tfdCost.setValue(0);
			costConfig.add(tfdCost);
			tfdCost.setFont(new Font("Dialog", 0, 15));
			costConfig.setMinimumSize(new Dimension(300, 75));
			costConfig.setMaximumSize(new Dimension(300, 75));
			costConfig.setPreferredSize(new Dimension(300, 75));
			this.add(costConfig);

			// create datePanel
			JPanel dateConfig = new JPanel();
			dateConfig.setBorder(BorderFactory.createTitledBorder(
					BorderFactory.createEtchedBorder(), "Datum"));
			dateConfig.setLayout(new GridLayout(0, 2));
			dateConfig.add(new JLabel("Datum: "));
			;
			dateConfig.add(tfdDate);
			dateConfig.setMinimumSize(new Dimension(300, 75));
			dateConfig.setMaximumSize(new Dimension(300, 75));
			dateConfig.setPreferredSize(new Dimension(300, 75));
			this.add(dateConfig);

			// create buttonPanel
			JPanel buttonConfig = new JPanel();
			buttonConfig.setLayout(new GridLayout(0, 2));
			buttonConfig.add(btnAdd);
			;
			btnAdd.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent arg0) {
					try {
						checkConfig();

						addCompany();
					}
					catch (WorkConfigException ice) {
						JOptionPane.showMessageDialog(null, ice.getMessage(),
								"Fehler bei der Eingabe:",
								JOptionPane.ERROR_MESSAGE);

					}
				}
			});
			buttonConfig.add(btnDelete);
			btnDelete.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent arg0) {
					System.out.println("button click");
				}

			});
			buttonConfig.setMinimumSize(new Dimension(300, 75));
			buttonConfig.setMaximumSize(new Dimension(300, 75));
			buttonConfig.setPreferredSize(new Dimension(300, 75));

			this.add(buttonConfig);

			// create allPanel
			JPanel allConfig = new JPanel();
			allConfig.setBorder(BorderFactory.createTitledBorder(
					BorderFactory.createEtchedBorder(), "Übersicht"));
			allConfig.setLayout(new BorderLayout());
			allConfig.add(new JLabel("Gesamtkosten: "), BorderLayout.WEST);
			allConfig.add(lbKosten, BorderLayout.CENTER);
			this.add(allConfig);
			this.add(table);

		}

		public void checkConfig() throws WorkConfigException {
			if (tfdCompany.getText().isEmpty()) {
				throw new WorkConfigException(
						"Bitte tragen Sie ein Unternehmen ein!");
			}

			if (tfdCost.getValue().equals(0)) {
				throw new WorkConfigException(
						"Bitte kontrollieren Sie die Eingabe der Kosten!");
			}
			String time = new SimpleDateFormat("dd.MM.yyyy").format(new Date());
			if (tfdDate.getText().equals(time)) {
				throw new WorkConfigException(
						"Bitte tragen Sie ein anderes Datum ein!");
			}
		}

		public void addCompany() {
			String name = tfdCompany.getText();
			String date = tfdDate.getText();
			String cost = tfdCost.getText();

			Unternehmen neu = new Unternehmen(name, date, cost);
			table.addToTable(neu);

		}

		public class WorkTable extends JPanel {
			private static final long serialVersionUID = 2053446323153016974L;

			final String[] columnNames = { "Firma", "Datum", "Kosten" };
			public DefaultTableModel tableModel = new DefaultTableModel(
					columnNames, 0);
			public JTable table = new JTable(tableModel);

			public WorkTable() {
				createGui();
			}

			private void createGui() {
				table.setEnabled(false);
				JScrollPane pane = new JScrollPane(table);
				setBorder(BorderFactory.createTitledBorder(
						BorderFactory.createEtchedBorder(), "Unternehmen"));
				setLayout(new BorderLayout());
				add(pane, BorderLayout.CENTER);

			}

			public void addToTable(Unternehmen u) {
				String name = u.name;
				String cost = u.cost;
				String date = u.date;

				tableModel.addRow(new Object[] { name, date, cost });
			}

		}

		public class Unternehmen {

			public String name, cost, date;

			public Unternehmen(String name, String cost, String date) {
				this.name = name;
				this.cost = cost;
				this.date = date;
			}
		}

		public class WorkConfigException extends Exception {
			private static final long serialVersionUID = 1L;

			public WorkConfigException(String s) {
				super(s);
			}
		}
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
thobren jtable arraylist Java Basics - Anfänger-Themen 12
thobren JTable Icon Java Basics - Anfänger-Themen 1
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
B jTable Spalte summieren Java Basics - Anfänger-Themen 7
N JTable auslesen Java Basics - Anfänger-Themen 6
O JTable in Excel mit Farben Java Basics - Anfänger-Themen 8
O Kommentar auf JTable Zelle Java Basics - Anfänger-Themen 2
M Jtable Reenderer Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
M Jtable änderung updaten Java Basics - Anfänger-Themen 2
O JTable Suchfunktion Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
M JTable an andere Klasse übergeben Java Basics - Anfänger-Themen 2
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Klasse in JTable einfügen Java Basics - Anfänger-Themen 7
S JTable Java Basics - Anfänger-Themen 16
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L JTable Tagebuch Spaltenhöhe verändern Java Basics - Anfänger-Themen 3
S JTable - Filter an anderen Colums Java Basics - Anfänger-Themen 2
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
C Best Practice JTable in MVC Pattern Java Basics - Anfänger-Themen 7
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
A zykl. Aktualisierne JTable Java Basics - Anfänger-Themen 9
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D JTable Zeile wird nicht in MySQL gelöscht Java Basics - Anfänger-Themen 16
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
C Klassen JTable wird ohne Header aufgebaut Java Basics - Anfänger-Themen 6
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
B Kniffel JTable Java Basics - Anfänger-Themen 5
N JTable flackert Java Basics - Anfänger-Themen 8
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
J ArrayList wird in JTable falsch angezeigt Java Basics - Anfänger-Themen 0
J Eintragen von Personen in JTable Java Basics - Anfänger-Themen 4
X JTable mit grünen und roten Punkten Java Basics - Anfänger-Themen 2
LexeB4F DEL --> JTable Zelleninhalt Java Basics - Anfänger-Themen 3
R JTable Auslesen Java Basics - Anfänger-Themen 1
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18
J JTable Wert gleich überschreiben Java Basics - Anfänger-Themen 6
S Zeile entfernen aus JTable Java Basics - Anfänger-Themen 15
S JTable clonen Java Basics - Anfänger-Themen 5
H Best Practice PDF JTable Java Basics - Anfänger-Themen 4
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M JTable mit XML datei befüllen Java Basics - Anfänger-Themen 1
F Zeile bei JTable hinzufügen Java Basics - Anfänger-Themen 6
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
M [JTable] getValue throws ArrayOutOfBoundException Java Basics - Anfänger-Themen 1
B JTable - Highlighter ??? Java Basics - Anfänger-Themen 3
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
O JScrollPane zu gross für JTable Java Basics - Anfänger-Themen 2
L JTable Row selected -> fireTableDataChange do nothing. Java Basics - Anfänger-Themen 3
E JTable + TableModel updaten? Java Basics - Anfänger-Themen 1
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
P jTable getColumnClass, mit unterschiedlichen Klassen in einer Column? Java Basics - Anfänger-Themen 5
M Eingabe in JTable bei Eingabe korrigieren Java Basics - Anfänger-Themen 2
Z jtable problem (das tausendste??) Java Basics - Anfänger-Themen 12
J JTable Java Basics - Anfänger-Themen 7
T JTable Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
Uzi21 jTable / Inhalt speichern Java Basics - Anfänger-Themen 2
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
C jtextfield und jtable Java Basics - Anfänger-Themen 34
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
G JTable: SelectionListener Problem Java Basics - Anfänger-Themen 2
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
S Icons in JTable per ResultSet Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
M Zelle von JTable mit Rahmen versehen Java Basics - Anfänger-Themen 4
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
G JTable: mehrzeilige Zellen erstellen Java Basics - Anfänger-Themen 2
W Problem JTable Java Basics - Anfänger-Themen 5
M JTable wird nicht aktualisiert Java Basics - Anfänger-Themen 4
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
S Warum wird JTable nicht angezeigt Java Basics - Anfänger-Themen 2
D jtable renderer und sortieren kombinieren Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben