Swing ComboBox(en) in JTable auslesen und ausgeben

purzel

Bekanntes Mitglied
Hallo,

ich sitze jetzt schon seit Stunden an meinem Problem und mir fällt einfach nichts mehr ein.

Ich habe in einer JTable in einer Spalte je eine JComboBox.

+++++++++++++++++++++++++++++++++++++++++
Vorname +Nachname+Abteilung +Löschen +
+++++++++++++++++++++++++++++++++++++++++
Vorname1+Vorname1+Abteilung1+JComboBox=JA/NEIN+
+++++++++++++++++++++++++++++++++++++++++
Vorname2+Vorname2+Abteilung1+JComboBox=JA/NEIN+
+++++++++++++++++++++++++++++++++++++++++
Vorname3+Vorname3+Abteilung2+JComboBox=JA/NEIN+
+++++++++++++++++++++++++++++++++++++++++
Vorname4+Vorname4+Abteilung3+JComboBox=JA/NEIN+
+++++++++++++++++++++++++++++++++++++++++

Jetzt will ich alle Comboboxen auswerten die den Wert JA haben

Einzeln mache ich das so:

Java:
JComboBox combobox = new JComboBox();
combobox.addItem("Nein");
combobox.addItem("Ja");
deleteColumn.setCellEditor(new DefaultCellEditor(combobox));
Object comboselect = (String) combobox.getSelectedItem();
if(comboselect.equals("Ja")) {
    JOptionPane.showMessageDialog(null, "Gelöscht!", "Löschung", 1);
    System.out.println(comboselect);
}

Aber wie kann ich dann wie im Beispiel 4 Comboboxen auswerten?

Versucht habe ich das schon mit einer Schleife (for):

Java:
for(int i = 0; i < comboselect.length; i++) {
    System.out.println(comboselect);
    if(comboselect.equals("Ja")) {
        JOptionPane.showMessageDialog(null, "Gelöscht!", "Löschung", 1);
    }
}

Als Fehlermeldung kommt:

Java:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String;
	at Edit.actionPerformed(Edit.java:123)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Ich hoffe es kann mir jemand helfen!

Lg

Purzel
 

Michael...

Top Contributor
Falscher Ansatz:
Du willst nicht die ComboBox auslesen, sondern den Tabelleninhalt

Stichwort:
Java:
table.getValueAt(int row, int column)
 
S

SlaterB

Gast
es fehlt Code, steht da zufällig irgendwo
> String[] comboselect = ...;
?
dann wäre interessant, was diese ... ist,

-------

letztlich aber alles egal,
der aktuell selektierte Wert sollte genau
> table.getValue(x,y)
sein, oder meinetwegen
> table.getModel().getValue(x,y)

welche Zeilen und welche Spalten in der Tabelle musst du dir immer noch überlegen/ mit Schleifen abfragen,
die ComboBox oder den CellEditor brauchst du dafür aber nicht,
es gibt eh nur genau eine ComboBox, die für die aktuelle Änderung verwendet wird
 

purzel

Bekanntes Mitglied
es fehlt Code, steht da zufällig irgendwo
> String[] comboselect = ...;
?
dann wäre interessant, was diese ... ist,

so sieht es bei mir momentan aus:

Java:
String[] comboselect = (String[]) combobox.getSelectedItem();

letztlich aber alles egal,
der aktuell selektierte Wert sollte genau
> table.getValue(x,y)
sein, oder meinetwegen
> table.getModel().getValue(x,y)

da kommt nur:

Code:
The method getValue(int, int) is undefined for the type JTable
bzw.
The method getValue(int, int) is undefined for the type TableModel

Was habe ich falsch gemacht bzw. falsch verstanden? ???:L
 
S

SlaterB

Gast
weil du zu hohe Indexe verwendest, gar nicht so viele Zeilen oder Spalten vorhanden sind?
ganz schön mühsam hier..
 

purzel

Bekanntes Mitglied
Ok, also:

Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;

public class Edit implements ActionListener {
	/*
	 * Datenbank
	 **/
	String url = "jdbc:mysql://*.*.*.*:3306/benutzer";
	String username = "***";
	String password = "***";
	
	int columns;
	
	//Tabelle definieren
    String[] columnNames = {"Vorname", "Nachname", "Abteilung", "Löschen"
    };
    String[][] rowData = null;
    //Object[][] rowData = null;
    
    Object row;
    
    JComboBox combobox = new JComboBox();
    JButton button = new JButton("Ändern");
	
	public Edit() {
		//Create and set up the window.
        JFrame jframe = new JFrame("Einträge bearbeiten");
        jframe.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        
        //Set the frame icon to an image loaded from a file.
        //frame.setIconImage(new ImageIcon(imgURL).getImage());
        
        //Set Sizeable to false
        jframe.setResizable(false);
        
        //Create BorderLayout
        jframe.setLayout(new BorderLayout());
    	
        Connection conn = null;
		PreparedStatement s_count, s_select;
		try {
			Class.forName ("com.mysql.jdbc.Driver").newInstance();
			conn = DriverManager.getConnection (url, username, password);
            System.out.println ("Database connection established");
            s_count = conn.prepareStatement("SELECT id, vorname, nachname, abteilung FROM benutzer");
            s_count.executeQuery();
            ResultSet rs_count = s_count.getResultSet();
            rs_count.last();
            columns = rs_count.getRow();
            s_select = conn.prepareStatement("SELECT id, vorname, nachname, abteilung FROM benutzer");
            s_select.executeQuery();
            ResultSet rs_select = s_select.getResultSet();
            rowData = new String[columns][3];
            int index = 0;
            while(rs_select.next()) {
            	rowData[index][0] = rs_select.getString("vorname");
                      rowData[index][1] = rs_select.getString("nachname");
                      rowData[index][2] = rs_select.getString("abteilung");
                index++;
            }
        } catch (Exception e) {
			e.printStackTrace();
			System.err.println ("Cannot connect to database server");
		} finally {
			if (conn != null) {
				try {
					conn.close ();
					System.out.println ("Database connection terminated");
				} catch (Exception e) {
					/* ignore close errors */
				}
			}
        }
		
		JTable table = new JTable(rowData, columnNames);		
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
	    TableColumnModel columnModel = table.getColumnModel();
        columnModel.getColumn(0).setPreferredWidth(200);
	    columnModel.getColumn(1).setPreferredWidth(200);
	    columnModel.getColumn(1).setPreferredWidth(75);
	    columnModel.getColumn(2).setPreferredWidth(50);
		
		TableColumn deleteColumn = table.getColumnModel().getColumn(2);
		DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
		renderer.setToolTipText("Diesen Eintrag löschen");
		deleteColumn.setCellRenderer(renderer);
		
		//columnModel.getColumn(3).setCellEditor(new DefaultCellEditor(new JCheckBox()));
		//columnModel.getColumn(3).setCellRenderer(table.getDefaultRenderer(Boolean.class));
		//columnModel.getColumn(3).setCellEditor(table.getDefaultEditor(Boolean.class));
			
		combobox.addItem("Nein");
		combobox.addItem("Ja");
		deleteColumn.setCellEditor(new DefaultCellEditor(combobox));
		row = table.getValueAt(columns, 3); //Reihen, Spalten
		
		button.addActionListener(this);
		jframe.add(BorderLayout.NORTH, button);
        jframe.add(BorderLayout.CENTER, new JScrollPane(table));
        
        //Size the frame.
        jframe.pack();

        //Show it.
        jframe.setVisible(true);
	}
	
	@Override
	public void actionPerformed(ActionEvent event) {
		//String comboselect = (String) combobox.getSelectedItem();
		//Object[] comboselect = (String[]) combobox.getSelectedItem();
		if(event.getActionCommand().equals("Ändern")) {
			if(row != null) {
				System.out.println(row);
			} else {
				System.out.println("Kein Ereignis in der JComboBox!");
			}
			//for(int i = 0; i < comboselect.length; i++) {
				//System.out.println(comboselect);
				//JOptionPane.showMessageDialog(null, "Funktion noch nicht aktiv!", "Löschung", 0);
				//if(comboselect.equals("Ja")) {
					//JOptionPane.showMessageDialog(null, "Gelöscht!", "Löschung", 1);
				//}
			//}
		}
	}
}
 
S

SlaterB

Gast
> TableColumn deleteColumn = table.getColumnModel().getColumn(2);
die Lsöchspalte mit Ja/Nein hat alsp Spaltenindex 2

und du fragst später
> table.getValueAt(columns, 3);
ab, da fällt dir wirklich nichts zu auf?

----

wobei man fairerweise sagen muss dass wirklich der Rest vorher vollkommen konfus ist,
nach dem Column-Names-Array willst du 4 Spalten haben,

den Sinn der Variablen
columns = rs_count.getRow();
verstehe ich gar nicht,

aus der DB liest du als dritten Wert die Abteilung, welcher dann durch ja/nein überschrieben wird?

auskommentierte Spalten usw.
verrückt..
 

Michael...

Top Contributor
purzel;696634=66 hat gesagt.:
columns = rs_count.getRow();
...
row = table.getValueAt(columns, 3); //Reihen, Spalten
Mal abgesehen davon, dass Rows was anderes ist als Columns.
Im Umfeld von ResultSets fangen die Indezes von Reihen und Listen mit 1 an in Java wird aber bei 0 angefangen zu zählen.
Bsp.: Hat Dein ResultSet zwei Datensätze liefert getRow() 2
dann wird das Array wird mit einer Länge von zwei initialisiert => es enthält die Indizes 0 und 1
Soweit passt alles.
mit der getValueAt(...) fragst Du nun aber nach dem Index 2 ==> ArrayOutOf...Exception
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
H Combobox in einer einzelnen Zelle der Jtable AWT, Swing, JavaFX & SWT 2
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
J Combobox als Filterkriterium (Gruppierung) in JTable AWT, Swing, JavaFX & SWT 7
M Combobox in JTable AWT, Swing, JavaFX & SWT 4
GilbertGrape JTable mit Combobox-Editierung schon nach einem Klick AWT, Swing, JavaFX & SWT 7
G Darstellungs Problem mit ComboBox in JTable AWT, Swing, JavaFX & SWT 15
G Navigation in JTable / ComboBox AWT, Swing, JavaFX & SWT 3
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
T Combobox mit Autocomplete-Funktion AWT, Swing, JavaFX & SWT 7
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
Doppel JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
P JavaFX ClassCastException bei ComboBox.getValue AWT, Swing, JavaFX & SWT 4
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
L JavaFX Wiederspenstige ComboBox AWT, Swing, JavaFX & SWT 0
P Combobox und Enum AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Combobox, Textfield & setOnMouseClicked AWT, Swing, JavaFX & SWT 2
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
D JavaFX ComboBox String setzen AWT, Swing, JavaFX & SWT 20
offi Combobox in TableCell AWT, Swing, JavaFX & SWT 1
D Javafx Combobox Abfrage aus mysql AWT, Swing, JavaFX & SWT 8
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
L ComboBox: slider positionieren AWT, Swing, JavaFX & SWT 0
M JavaFX ComboBox: Update zur Laufzeit AWT, Swing, JavaFX & SWT 16
M JavaFX Combobox bindBidirectional AWT, Swing, JavaFX & SWT 4
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
H Combobox aktualisieren AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
M JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
J ComboBox als Filter benutzen AWT, Swing, JavaFX & SWT 1
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
G Dynamische ComboBox AWT, Swing, JavaFX & SWT 3
U Combobox mit individuellen Texten AWT, Swing, JavaFX & SWT 5
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
C Beschriftungen von Tabellenspalten mit Combobox aussuchen AWT, Swing, JavaFX & SWT 2
G JavaFX ComboBox .getItems().add() Problem AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
W Swing Combobox Abhängigkeit AWT, Swing, JavaFX & SWT 1
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI AWT, Swing, JavaFX & SWT 7
S Combobox aktualisieren AWT, Swing, JavaFX & SWT 3
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
J Swing Drive-ComboBox AWT, Swing, JavaFX & SWT 7
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
L Swing Model für ComboBox AWT, Swing, JavaFX & SWT 14
T Java Combobox Problem AWT, Swing, JavaFX & SWT 3
C SWT Combobox mit Textdatei füllen AWT, Swing, JavaFX & SWT 2
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
R Datenbanktabellen in Combobox AWT, Swing, JavaFX & SWT 3
C Combobox bei Tabellenänderung mit aktualisieren AWT, Swing, JavaFX & SWT 11
1 CellEditor mit ComboBox richtig beenden AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
E Swing CellEditor mit Combobox durch Tastatureingabe editieren?! AWT, Swing, JavaFX & SWT 3
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
M Index von Combobox AWT, Swing, JavaFX & SWT 20
L ComboBox in Action AWT, Swing, JavaFX & SWT 4
D ComboBox & CellListRenderer AWT, Swing, JavaFX & SWT 6
D ComboBox-Model mit Observer AWT, Swing, JavaFX & SWT 3
B Taschenrechner mit ComboBox AWT, Swing, JavaFX & SWT 7
T ComboBox auslesen AWT, Swing, JavaFX & SWT 11
P Combobox liesst falschen Wert AWT, Swing, JavaFX & SWT 10
C Combobox im JFrame aus Datenbank befüllen AWT, Swing, JavaFX & SWT 6
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
M Swing ComboBox ein SelectedItem übergeben/anzeigen AWT, Swing, JavaFX & SWT 7
J Werte aus Combobox speichern AWT, Swing, JavaFX & SWT 3
R Swing ComboBox und doppelter Event!? AWT, Swing, JavaFX & SWT 10
M SWT Wie Textfeld hinzufügen, nach Auswahl von einem bestimmten Combobox-item? AWT, Swing, JavaFX & SWT 3
M SWT ComboBox mit DB-Inhalten Designfrage AWT, Swing, JavaFX & SWT 5
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
W Combobox mit eingabefeld AWT, Swing, JavaFX & SWT 7
T Editable ComboBox / kein Weiterspringen AWT, Swing, JavaFX & SWT 12
S Swing ComboBox aus Array befüllen AWT, Swing, JavaFX & SWT 2
K Per ComboBox Dateien einlesen AWT, Swing, JavaFX & SWT 23
0 Hintergundfarbe von editierbarer ComboBox ändern AWT, Swing, JavaFX & SWT 2
M Frage zu ComboBox AWT, Swing, JavaFX & SWT 7
O Bitte um Hilfe bei ComboBox in TableHeader AWT, Swing, JavaFX & SWT 9
A NetBeans und ComboBox AWT, Swing, JavaFX & SWT 2
SuperSeppel13 Combobox zur Farbwahl kollidiert mit NimbusLookAndFeel AWT, Swing, JavaFX & SWT 7
D ComboBox(Model) mit dummyItem AWT, Swing, JavaFX & SWT 10
D Inhalt von Textfield nach ComboBox AWT, Swing, JavaFX & SWT 2
GilbertGrape nochmal editierbare Combobox AWT, Swing, JavaFX & SWT 3
E Swing Button ActionListener Infos aus Textfield und ComboBox AWT, Swing, JavaFX & SWT 3
G ComboBox wird nicht angezeigt beim anhängen an eine Gruppe AWT, Swing, JavaFX & SWT 2
G Combobox Event AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben