Zeile bei JTable hinzufügen

Feras

Aktives Mitglied
Hi, ich möchte gern bei der folgenden Tabelle per Befehl aus einer GUI eine weitere Zeile hinzufügen (addRow geht ja glaube nicht beim AbstractTableModel). Welchen Befehl kann man sonst verwenden?

MfG Feras

Java:
import javax.swing.table.AbstractTableModel;

class MyTableModel extends AbstractTableModel {

	private String[] columnNames = { "Produktname", "Anzahl", "Verkaufspreis",
			"Kategorie", "Restposten", "Beschreibung" };

	private Object[][] data = {
			{ "Hammer", "5", "1000", "Werkzeug", new Boolean(false),
					"Ein schöner Hammer" },
			{ "Computer", "2", "100000", "Elektronik", new Boolean(true),
					"Ein schöner Computer" },
			{ "Smartphone", "12", "10000", "Elektronik", new Boolean(false),
					"Ein schönes Smartphone" },
			{ "Hose", "6", "4000", "Kleidung", new Boolean(true),
					"Eine schöne Höse" },
			{ "Geschichtsbuch", "7", "1000", "Bücher", new Boolean(false),
					"Ein schönes Buch" } };

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

	public int getRowCount() {
		return data.length;
	}

	public String getColumnName(int col) {
		return columnNames[col];
	}

	public Object getValueAt(int row, int col) {
		return data[row][col];
	}

	public Class getColumnClass(int c) {
		return getValueAt(0, c).getClass();
	}

	public boolean isCellEditable(int row, int col) {

		return false;
	}

}
 

Flown

Administrator
Mitarbeiter
Naja selbst implementieren und danach ein Event feuern damit die UI weiß das sich das Model geändert hat.

Oder du verwendest das DefaultTableModel. Das bietet dir die addRow-Methode an.
 

Feras

Aktives Mitglied
Da hab ich das Problem, dass das DefaultTable Model nicht mehr angezeigt wird. Das model sieht so aus:

Java:
import javax.swing.table.DefaultTableModel;

public class MyTableModel {

       static DefaultTableModel model = new DefaultTableModel();

	public MyTableModel() {

		model = new DefaultTableModel(new Object[][] {
				{ "Hammer", "5", "1000", "Werkzeug", new Boolean(false),
						"Ein schöner Hammer" },
				{ "Computer", "2", "100000", "Elektronik", new Boolean(true),
						"Ein schöner Computer" },
				{ "Smartphone", "12", "10000", "Elektronik",
						new Boolean(false), "Ein schönes Smartphone" },
				{ "Hose", "6", "4000", "Kleidung", new Boolean(true),
						"Eine schöne Höse" },
				{ "Geschichtsbuch", "7", "1000", "Bücher", new Boolean(false),
						"Ein schönes Buch" } }, new Object[] { "Column 1",
				"Column 2", "Column 3", "Column 4", "Column 5", "Column 6" });

	}


	public boolean isCellEditable(int row, int col) {

		return false;
	}

}
 

Flown

Administrator
Mitarbeiter
Was tust du da?

Hier mal ein Beispiel dazu:

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
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 Test {

  public static void main(String... args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        new Test();
      }
    });
  }

  public Test() {
    JFrame frame = new JFrame("JTable");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationByPlatform(true);
    frame.setSize(600, 400);

    JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

    JTable table = new JTable();
    DefaultTableModel model = new DefaultTableModel(new Object[][]{{"1", "a"}, {"2", "b"}, {"3", "c"}}, new Object[]{"First", "Second"});
    table.setModel(model);

    mainPanel.add(new JScrollPane(table));

    Box textFieldBox = Box.createHorizontalBox();
    JTextField firstString = new JTextField();
    textFieldBox.add(firstString);

    JTextField secondString = new JTextField();
    textFieldBox.add(secondString);

    mainPanel.add(Box.createVerticalStrut(20));
    mainPanel.add(textFieldBox);

    Box buttonBox = Box.createHorizontalBox();

    JButton addBtn = new JButton("Add");
    addBtn.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        if (!firstString.getText().isEmpty() || !secondString.getText().isEmpty()) {
          model.addRow(new Object[]{firstString.getText(), secondString.getText()});
          firstString.setText(null);
          secondString.setText(null);
        }
      }
    });
    JButton deleteBtn = new JButton("Delete");
    deleteBtn.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        if (!table.getSelectionModel().isSelectionEmpty()) {
          for (int i = model.getRowCount() - 1; i >= 0; i--) {
            if (table.getSelectionModel().isSelectedIndex(i)) {
              model.removeRow(i);
            }
          }
        }
      }
    });

    buttonBox.add(addBtn);

    buttonBox.add(Box.createHorizontalStrut(20));
    buttonBox.add(deleteBtn);

    mainPanel.add(Box.createVerticalStrut(20));
    mainPanel.add(buttonBox);

    frame.add(mainPanel);

    frame.setVisible(true);
  }
}
 

Feras

Aktives Mitglied
gleiche Problem, kanns an der implementierung liegen?

Java:
table = new JTable(MyTableModel.model);
			JScrollPane scrollTable = new JScrollPane(table,
					ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
					ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			GridBagConstraints gbc_Table = new GridBagConstraints();
			gbc_Table.insets = new Insets(0, 10, 5, 5);
			gbc_Table.gridx = 0;
			gbc_Table.gridy = 1;
			// table.setEnabled(false); // ob Zellen editierbar sind false =
			// nein
			table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			Dimension d = table.getPreferredSize();
			d.width = 500;
			table.setPreferredScrollableViewportSize(d);
			contentPanel.add(scrollTable, gbc_Table);
 

Flown

Administrator
Mitarbeiter
Ich weiß ja nicht. Warum verwendest du ein statisches Model? Das ist sicher das Problem!

Poste doch mal den ganzen Code.
 

Harry Kane

Top Contributor
Die model Variable in deiner MyTableModel-Klasse ist statisch, deshalb kannst du per MyTableModel.model auf sie zugreifen.
Dein model wird allerdings erst im Konstruktor von MyTableModel befüllt, und davon dass du diesen aufrufst, ist in deinem Code nix zu sehen.
Möglichkeit 1: du schreibst dein eigenes TableModel (welches sinnvollerweise eine Erweiterung von AbstractTableModel sein sollte, es sei denn, es gibt sehr gewichtige Gründe, die dagegen sprechen). Diesem eigenen TableModel kannst du Methoden deiner Wahl verpassen, um die darin enthaltenen Daten zu verändern.
Möglichkeit 2: Du verwendest DefaultTableModel. Das bedeutet NICHT, dass du DefaultTableModel erweitern sollst!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G jtable, zeile automatisch hinzufügen Java Basics - Anfänger-Themen 3
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
D JTable Zeile wird nicht in MySQL gelöscht Java Basics - Anfänger-Themen 16
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
S Zeile entfernen aus JTable Java Basics - Anfänger-Themen 15
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
L Neue Zeile JTable Java Basics - Anfänger-Themen 13
E Nächste freie Zeile in jTable ansprechen Java Basics - Anfänger-Themen 5
G jtable listener wenn zeile markiert wird Java Basics - Anfänger-Themen 6
G JTable aus Hibernate Zeile löschen Java Basics - Anfänger-Themen 4
T Text einer JTable-Zeile farblich ändern Java Basics - Anfänger-Themen 16
S JTable: Wie kann ich die Werte aus der selektierten Zeile au Java Basics - Anfänger-Themen 11
Glühlampe Usereingabe in der gleichen Zeile ausgeben Java Basics - Anfänger-Themen 6
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
padde479 Zeile entfernen TableModel Java Basics - Anfänger-Themen 11
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
I Wortkette in umgekehrter Rheinfolge + in neuer Zeile ausgeben Java Basics - Anfänger-Themen 4
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
dieter000 Wie schreibe ich diese ZEile um? Java Basics - Anfänger-Themen 1
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
S Gesamten String in einer Zeile ausgeben Java Basics - Anfänger-Themen 2
J ObjectOutputStream writeChars, komische Zeichen nur in 1. Zeile Java Basics - Anfänger-Themen 2
T Was macht diese Zeile? Java Basics - Anfänger-Themen 9
A Jede x-te Zeile, lösche 10 Zeilen Java Basics - Anfänger-Themen 9
L Tiefe Kopie einer Zeile eines zweidimensionalen Arrays Java Basics - Anfänger-Themen 1
B Code Zeile unklar Java Basics - Anfänger-Themen 9
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
F Zeile in Ordner Java Basics - Anfänger-Themen 4
jaleda100 JTextArea Zeile einfügen Java Basics - Anfänger-Themen 1
M BufferedReader neue Zeile nach Knopfdruck Java Basics - Anfänger-Themen 9
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Java liest nur eine Zeile ein Java Basics - Anfänger-Themen 3
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
B Wieso wird die Zeile "column" genannt und die Spalte "line"? Java Basics - Anfänger-Themen 12
S BufferedReader nächste Zeile lesen Java Basics - Anfänger-Themen 4
M Zeile in datei überschreiben Java Basics - Anfänger-Themen 5
S drawString() neue Zeile Java Basics - Anfänger-Themen 4
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
W String in einer Zeile mit Alphabet füllen? Java Basics - Anfänger-Themen 8
snipesss [Java] Schriftart und Schriftgröße von JLabel in einer Zeile festlegen? Java Basics - Anfänger-Themen 3
H Variablen Zeile aus einem ResultSet ausleesen Java Basics - Anfänger-Themen 7
E Wenn i (for-Loop) bestimmter Wert, dann neue Zeile eines Buttons Java Basics - Anfänger-Themen 7
R Ab einer bestimmten Zeile lesen Java Basics - Anfänger-Themen 3
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
C Datentypen Zeile aus mehrdimensionalem Array extrahieren uns abspeichern Java Basics - Anfänger-Themen 6
B FileInputStream entpacken und Zeile für Zeile entpacken Java Basics - Anfänger-Themen 1
D Datenbankzugriff - Leere Zeile einfügen Java Basics - Anfänger-Themen 2
G zeichen einer Zeile löschen Java Basics - Anfänger-Themen 4
A CSV datei eine Bestimmte Zeile ansprechen Java Basics - Anfänger-Themen 1
J Input/Output Zeile in Textdatei ändern Java Basics - Anfänger-Themen 14
S Java CSV, er nimmt die nächste Zeile nicht Java Basics - Anfänger-Themen 2
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
G Zeile charweise lesen Java Basics - Anfänger-Themen 3
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
G zeile: Was bedeutet das in der Methode? Java Basics - Anfänger-Themen 4
T Textdatei Zeile löschen? Java Basics - Anfänger-Themen 4
C Input/Output Hilfe..txt Datei zeile verändern und Ausgabe ..Hilfe Java Basics - Anfänger-Themen 11
N Bestimmte Zeile aus einer Datei auslesen Java Basics - Anfänger-Themen 10
L Ansprechung der x'ten Zeile in Arrays Java Basics - Anfänger-Themen 10
S Textdatei lesen, Methode gibt nur die letzte Zeile aus. Warum? Java Basics - Anfänger-Themen 5
J Neue Zeile an bestimmter Stelle in Textdatei einfügen Java Basics - Anfänger-Themen 2
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
I .txt Datei Zeile löschen. Java Basics - Anfänger-Themen 13
B Geschwindigkeitsabhängigkeit von Anz. d. Operatoren pro Zeile Java Basics - Anfänger-Themen 12
D Bestimmte Zeile aus TXT Datei ausgeben Java Basics - Anfänger-Themen 4
H Input/Output JTextArea einzelne Zeile auslesen Java Basics - Anfänger-Themen 6
Rayo Lese Zahl in Zeile x aus Spalte y ein! Java Basics - Anfänger-Themen 36
T Erste Schritte Ende von Wörtern in einer Zeile feststellen? Java Basics - Anfänger-Themen 5
N User Eingabe mit Zeile aus TextFile vergleichen Java Basics - Anfänger-Themen 13
L warum werden nicht die neuen Point Daten der Zeile 25 beim ausprinten Zeile 28 übernommen ? Java Basics - Anfänger-Themen 8
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
D Input/Output bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
G Ausgabe nach 5 Zeichen in neue Zeile schreiben??? Java Basics - Anfänger-Themen 12
H Zeile aus Textdatei lesen und in Textfield schreiben Java Basics - Anfänger-Themen 4
B Erste Schritte Kosolennanwenung nur eine Zeile Java Basics - Anfänger-Themen 9
W letzte Zeile aus wachsender Textdatei auslesen Java Basics - Anfänger-Themen 5
S Itext und eine neue Zeile einfügen Java Basics - Anfänger-Themen 2
B Aus Text Zeile einen String herauslesen Java Basics - Anfänger-Themen 11
W Eingabe und Ausgabe in eine Zeile Java Basics - Anfänger-Themen 4
Corben Input/Output FileOutputStream - neue Zeile mit write(10) Java Basics - Anfänger-Themen 6
K Erste Schritte Array mit 3 werte in eine Zeile -- Hilfe! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben