Swing jcombobox als jtable-editor: neues Item auswählen

markusk21

Mitglied
Hallo zusammen, ich hab mal wieder ein Problem.
Ich habe eine JComboBox als Celleditor eingerichtet - funktioniert gut soweit.

Aber wie krieg ich es hin, über diesen Celleditor ein neues Element anzulegen?
Konkret:
Das ist der Editor:
Java:
    @SuppressWarnings("unchecked")
    private javax.swing.JComboBox getWgEditor() {
	java.util.List<data.Wg> tmpListe = (java.util.List<data.Wg>) session.createQuery("from data.Wg").list();
	javax.swing.JComboBox comboBox = new javax.swing.JComboBox(tmpListe.toArray());

	comboBox.setEditable(true);
	comboBox.addActionListener(new java.awt.event.ActionListener() {

	    /**
	     * Bei "Not in List" wird eine neue WG angelegt.
	     */
	    public void actionPerformed(ActionEvent ae) {
		if ((((javax.swing.JComboBox)ae.getSource()).getSelectedIndex() == -1) &&
			(!((javax.swing.JComboBox)ae.getSource()).getSelectedItem().toString().isEmpty()))
		    saveNewWg(((javax.swing.JComboBox)ae.getSource()).getSelectedItem().toString());
	    }
	});
	return comboBox;
    }

Hier wird die wg gespeichert:
Java:
    /**
     * speichert eine Neue WG in die Datenbank
     * @param wgName
     */
    private void saveNewWg(String wgName){
	if (!this.wg.getWgName().matches(wgName)){
	    logger.debug("wgs: this.wg: " + this.wg.getWgName()+ "newString: " + wgName);
	    wg = new data.Wg();
	    wg.setWgName(wgName);
	    int selectedRow = this.getSelectedRow();
	    org.hibernate.Transaction tx = session.beginTransaction();
	    session.saveOrUpdate(wg);

	    tx.commit();
	    getColumnModel().getColumn(1).setCellEditor(new javax.swing.DefaultCellEditor(this.getWgEditor()));
	    logger.debug("Neue Wgid?: " + wg.getId());
	    logger.debug("Selected Row: " + selectedRow);
	    model.setValueAt(wg, selectedRow, 1);
	    logger.debug("Selected Uni: " + getModel().getValueAt(selectedRow, 1));
	}
    }
Funktioniert auch gut soweit - die wg erhält aus der saveOrUpdate-Methode sogar die Id des neuen Datensatzes zurück. Wg ist danach also ein vollwertiges, persistentes Objekt.

Aber model.setValueAt funktioniert nicht! Scheinbar wird beim edieren einer Zelle nicht die Zeile selektiert (die logger-zeile):
Code:
Selected Uni: null

Ich hab schon nach einem "Edit-Listener" oder so gesucht, aber der TableModelListener hat ja nur das tableChanged-Event, das wird nicht ausgelöst (bisher).

Also, am liebsten würde ich der Combobox sagen, sie soll das neue Element aus der Edit-Prozedur zurückgeben.
Die weniger "schöne" Lösung wär wohl, aus der Zeile das geänderte objekt in der Datenbank zu speichern und die Tabelle schlicht neu einzulesen.
Komm aber bei beiden Ideen nicht weiter :(
 
Zuletzt bearbeitet:

markusk21

Mitglied
Hmm, ok... Die ganze Tabellenklasse:
Java:
package gui.tables;

import java.awt.event.ActionEvent;
import javax.swing.event.TableModelEvent;
import meinekomponenten.AutofitTableColumns;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import java.awt.Component;
import java.awt.Dimension;
import java.io.Serializable;
import java.util.Hashtable;
import javax.swing.table.*;
import org.hibernate.Session;

/**
 *
 * @author markus
 */
public class HochschulenTabelle extends javax.swing.JTable implements Serializable{
    Logger logger = Logger.getLogger("gui.tables.HochschulenTabelle");
    org.hibernate.Session session = persistence.HibernateUtil.getSessionFactory().openSession();
    gui.tables.HochschuleList2TableModel model;
    data.Wg wg = new data.Wg();	// Für neue WG!
    String hql;

    /**
     * Default Konstructor to be set up with hql-code, NOT sql!
     * @param hql   hql- code for hibernate
     */
    public HochschulenTabelle(String hql){
	super();
	logger.setLevel(Level.DEBUG);
	this.hql = hql;
	
	model = new gui.tables.HochschuleList2TableModel(session, session.createQuery(hql));
	setModel(model);

	javax.swing.table.TableCellEditor tCellEditor = new javax.swing.DefaultCellEditor(this.getWgEditor());

	getColumnModel().getColumn(1).setCellEditor(tCellEditor);
	getColumnModel().getColumn(0).setCellEditor(new javax.swing.DefaultCellEditor(new javax.swing.JTextField()));

	logger.debug("model: " + model.getColumnName(0) + " "+ model.getColumnName(1));

	AutofitTableColumns.autoResizeTable(this, true);

	model.addTableModelListener(new javax.swing.event.TableModelListener() {

	    public void tableChanged(TableModelEvent tme) {
		tableModelEvent(tme);
	    }
	});
	setAutoCreateRowSorter(true);
	setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
	setFont(new java.awt.Font("SansSerif", java.awt.Font.PLAIN, 12));
    }

    /**
     * Creates a standard HochschulenTabelle with folowing hql-code:
     * from data.Hochschule h order by h.wg, h.hochschule
     */
    public HochschulenTabelle(){
	this("from data.Hochschule h order by h.wg, h.hochschule");
    }

    /**
     * Liefert eine JCombobox die die WGs enthält
     * @return
     */
    @SuppressWarnings("unchecked")
    private javax.swing.JComboBox getWgEditor() {
	java.util.List<data.Wg> tmpListe = (java.util.List<data.Wg>) session.createQuery("from data.Wg").list();
	javax.swing.JComboBox comboBox = new javax.swing.JComboBox(tmpListe.toArray());

	comboBox.setEditable(true);
	comboBox.addActionListener(new java.awt.event.ActionListener() {

	    /**
	     * Bei "Not in List" wird eine neue WG angelegt.
	     */
	    public void actionPerformed(ActionEvent ae) {
		if ((((javax.swing.JComboBox)ae.getSource()).getSelectedIndex() == -1) &&
			(!((javax.swing.JComboBox)ae.getSource()).getSelectedItem().toString().isEmpty()))
		    saveNewWg(((javax.swing.JComboBox)ae.getSource()).getSelectedItem().toString());
	    }
	});
	return comboBox;
    }

    private void tableModelEvent(TableModelEvent tme){
	logger.debug("Model-Event! Zeile: " + tme.getFirstRow());
	String type ="";
	switch (tme.getType()){
	    case TableModelEvent.UPDATE: type = "Update";
	    break;
	    case TableModelEvent.DELETE: type = "Delete";
	    break;
	    case TableModelEvent.INSERT: type = "INSERT";
	    break;
	}
	logger.debug("Model-Event! Type: " + tme.getType() + " " + type);
	logger.debug("Model-Event! Spalte: " + tme.getColumn());
    }
    /**
     * speichert eine Neue WG in die Datenbank
     * @param wgName
     */
    private void saveNewWg(String wgName){
	if (!this.wg.getWgName().matches(wgName)){
	    logger.debug("wgs: this.wg: " + this.wg.getWgName()+ "newString: " + wgName);
	    wg = new data.Wg();
	    wg.setWgName(wgName);
	    int selectedRow = this.getSelectedRow();
	    org.hibernate.Transaction tx = session.beginTransaction();
	    session.saveOrUpdate(wg);

	    tx.commit();
	    getColumnModel().getColumn(1).setCellEditor(new javax.swing.DefaultCellEditor(this.getWgEditor()));
	    logger.debug("Neue Wgid?: " + wg.getId());
	    logger.debug("Selected Row: " + selectedRow);
	    model.setValueAt(wg, selectedRow, 1);
	    logger.debug("Selected Uni: " + getModel().getValueAt(selectedRow, 1));
	}
    }

    /**
     * Liest die Datenbank neu ein - bei Änderungen von außerhalb in der Datenbank
     */
    public void requery(){
	getColumnModel().getColumn(1).setCellEditor(new javax.swing.DefaultCellEditor(this.getWgEditor()));
	this.model.requery();
    }

    public void removeRow(int row){
	int selected = this.getRowSorter().convertRowIndexToModel(this.getSelectedRow());
	model.removeRow(selected);
    }

    /**
     * neue Abfrage
     * @param hql
     */
    public void query(String hql){
	this.hql = hql;
	model.setQuery(session.createQuery(hql));
    }

    public String getHql() {
	return hql;
    }

    public void setHql(String hql) {
	this.hql = hql;
    }

    public HochschuleList2TableModel getHochschuleModel() {
	return model;
    }


    public Session getSession() {
	return session;
    }

    public void setSession(Session session) {
	this.session = session;
    }

    public TableModel getDataModel() {
	return dataModel;
    }

    public void setDataModel(TableModel dataModel) {
	this.dataModel = dataModel;
    }

    public Hashtable getDefaultEditorsByColumnClass() {
	return defaultEditorsByColumnClass;
    }

    public void setDefaultEditorsByColumnClass(Hashtable defaultEditorsByColumnClass) {
	this.defaultEditorsByColumnClass = defaultEditorsByColumnClass;
    }

    public Hashtable getDefaultRenderersByColumnClass() {
	return defaultRenderersByColumnClass;
    }

    public void setDefaultRenderersByColumnClass(Hashtable defaultRenderersByColumnClass) {
	this.defaultRenderersByColumnClass = defaultRenderersByColumnClass;
    }

    public Component getEditorComp() {
	return editorComp;
    }

    public void setEditorComp(Component editorComp) {
	this.editorComp = editorComp;
    }

    public Dimension getPreferredViewportSize() {
	return preferredViewportSize;
    }

    public void setPreferredViewportSize(Dimension preferredViewportSize) {
	this.preferredViewportSize = preferredViewportSize;
    }

    public static void main(String args[]) {
	javax.swing.JFrame frame = new javax.swing.JFrame("HochschulenTabelle Test...");
	javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
	jScrollPane1.setViewportView(new HochschulenTabelle());
	frame.setLayout(new java.awt.GridLayout(1, 1));
	frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
	frame.add(jScrollPane1);
	frame.pack();
	frame.setVisible(true);
    }
}

Dann ist hier noch die Modell-Klasse:
Java:
package gui.tables;

import java.util.List;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.Session;
import java.io.Serializable;

/**
 *
 * @author markus
 */
public class HochschuleList2TableModel 
	extends gui.tables.AbstractList2TableModel
	implements Serializable{

    java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("gui/resources/Person_Hochschule_WG");
    java.util.List<data.Hochschule> content;
    Logger logger = Logger.getLogger("gui.tables.HochschuleList2TableModel");

    public HochschuleList2TableModel(org.hibernate.Session session, org.hibernate.Query query){
	super(session, query);
	logger.setLevel(Level.DEBUG);
    }

    public void removeRow(int row){
	if (javax.swing.JOptionPane.showConfirmDialog(null, "Wollen Sie " + this.content.get(row).getHochschule()
		 + " wirklich löschen? Alle erfassten Daten gehen dabei endgültig verloren!", "Hochschule löschen?", javax.swing.JOptionPane.YES_NO_OPTION)
		== javax.swing.JOptionPane.YES_OPTION) {
	    org.hibernate.Transaction tx = this.session.beginTransaction();
	    this.session.delete(this.content.get(row));
	    tx.commit();
	}
	this.requery();
    }

    @SuppressWarnings("unchecked")
    @Override
    public void setupModelContent(){
	this.content = (java.util.List<data.Hochschule>)this.query.list();
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
	return true;
    }

    public Object getValueAt(int rowIndex, int columnIndex){
	Object value = null;
	switch (columnIndex){
	    case 0:
		value = content.get(rowIndex);
		break;
	    case 1:
		value = content.get(rowIndex).getWg();
		break;

	}
	return value;
    }

    public List<data.Hochschule> getContent() {
	return content;
    }

    /**
     * Liefert die Person der betreffenden Zeile
     * @param rowIndex
     * @return data.Person
     */
    public data.Hochschule getHochschuleAt(int rowIndex){
	return (data.Hochschule)getObjectAt(rowIndex);
    }

    @Override
    public String getColumnName(int columnIndex){

	switch (columnIndex){
	    case 1: return bundle.getString("Wg.text");
	    case 0: return bundle.getString("Hochschule.text");
	    default: return "";
	}
    }
    
    @Override
    public Class getColumnClass(int columnIndex){
	switch (columnIndex){
	    case 0: return data.Hochschule.class;
	    case 1: return data.Wg.class;
	    default: return String.class;
	}
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex){
	logger.debug("Zelle geändert: (" + rowIndex + "," + columnIndex + "): " + aValue);
	org.hibernate.Transaction tx = session.beginTransaction();
	data.Hochschule hochschule = content.get(rowIndex);
	
	if (columnIndex ==0)
	    hochschule.setHochschule((String)aValue);
	
	session.update(hochschule);
	tx.commit();
    }

    public int getColumnCount(){
	return 2;
    }
}

Die abstrakte Klasse macht nicht viel :)

Und wie gesagt, mit setValueAt hab ich es versucht, weiß aber nicht, wie ich die Zeile rauskriegen soll...
 

markusk21

Mitglied
Jup, danke Ebenius!
Hab den ganzen Kram aus der Tabellenklasse rausgeschmissen und im Model die setValueAt folgendermaßen angepasst:

Java:
    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex){
	
	logger.debug("Zelle geändert: (" + rowIndex + "," + columnIndex + "): " + aValue);
	data.Hochschule hochschule = content.get(rowIndex);

	if (columnIndex == 0)
	    hochschule.setHochschule((String)aValue);

	if (columnIndex == 1)
	{
	    if (aValue instanceof String) {
		hochschule.setWg(saveNewWg((String)aValue));
		
	    }else if (aValue instanceof data.Wg){
		hochschule.setWg((data.Wg)aValue);
	    }
	}
	
	org.hibernate.Transaction tx = session.beginTransaction();
	session.update(hochschule);
	tx.commit();
    }

So läuft es (natürlich) :oops:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
D Swing Erstes Item einer JCombobox in JTable anzeigen AWT, Swing, JavaFX & SWT 2
N JComboBox in JTable [Swing] -> totaler UI-Einsteiger AWT, Swing, JavaFX & SWT 3
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
F Swing JComboBox in JTable AutoComplete + Tab AWT, Swing, JavaFX & SWT 4
M JComboBox Item-Auswahl in JTable AWT, Swing, JavaFX & SWT 2
H Unterschiedliche JComboBox je JTable Zeile AWT, Swing, JavaFX & SWT 4
D Swing jTable mit jComboBox in einem Coloumn AWT, Swing, JavaFX & SWT 28
S Einzelne JComboBox in JTable austauschen AWT, Swing, JavaFX & SWT 4
S Swing AWT-Exception bei JTable mit JComboBox beim Löschen der letzten Zeile AWT, Swing, JavaFX & SWT 3
C jComboBox in jTable ohne Klick öffnen AWT, Swing, JavaFX & SWT 4
O Swing JComboBox in JTable AWT, Swing, JavaFX & SWT 14
K Swing JComboBox in JTable AWT, Swing, JavaFX & SWT 9
B JComboBox in JTable, Actionlistener AWT, Swing, JavaFX & SWT 10
E Swing JComboBox als CellEditor in JTable zeigt Elemente nicht sofort an AWT, Swing, JavaFX & SWT 5
N jTable mit JComboBox auslesen AWT, Swing, JavaFX & SWT 6
K Swing JTable mit JComboBox AWT, Swing, JavaFX & SWT 10
A JComboBox bei Veränderungen in der JTable mit aktualisieren AWT, Swing, JavaFX & SWT 6
A JComboBox-Zeilen in JTable AWT, Swing, JavaFX & SWT 2
W JComboBox in einer Reihe von JTable AWT, Swing, JavaFX & SWT 7
G Swing JComboBox in JTable beim Aufklappen befüllen AWT, Swing, JavaFX & SWT 3
S JComboBox in JTable wird erst nach klick angezeigt AWT, Swing, JavaFX & SWT 2
O JCombobox in EINER JTable Cell AWT, Swing, JavaFX & SWT 5
G JComboBox und JTable transparent AWT, Swing, JavaFX & SWT 18
D JCombobox in JTable AWT, Swing, JavaFX & SWT 5
J JCombobox in JTable klappt beim ersten Tastendruck zu AWT, Swing, JavaFX & SWT 3
G JTable mit JComboBox als Celleditor, selectedRow falsch! AWT, Swing, JavaFX & SWT 3
A JCombobox in JTable AWT, Swing, JavaFX & SWT 4
S JCbox in Jtable Zelle nur anzeigen , wenn JCombobox ="a AWT, Swing, JavaFX & SWT 3
H JTable und JCombobox ? AWT, Swing, JavaFX & SWT 2
M JComboBox in JTable immer sichtbar AWT, Swing, JavaFX & SWT 16
R JComboBox über ein AstractTableModel in eine JTable packen AWT, Swing, JavaFX & SWT 2
S JTable (Scrollpane und ColumnNames) und JComboBox AWT, Swing, JavaFX & SWT 2
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
TRunKX Kann man ne JCOmboBox in eine JTAble einfügen AWT, Swing, JavaFX & SWT 10
D JTable und JComboBox oder CheckboxGroup AWT, Swing, JavaFX & SWT 6
S JComboBox in JTable AWT, Swing, JavaFX & SWT 8
K JTable als Popup in einer JComboBox? AWT, Swing, JavaFX & SWT 3
B Wert einer JCombobox in einer JTable setzen AWT, Swing, JavaFX & SWT 2
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
R JComboBox abfragen AWT, Swing, JavaFX & SWT 1
Esquid If Befehl bei JComboBox AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
D JComboBox Strings aus JTextFields zuordnen AWT, Swing, JavaFX & SWT 2
F JComboBox und Model AWT, Swing, JavaFX & SWT 10
I Editierbare JComboBox, die nur Ganzzahlen als Eingabewerte zulässt AWT, Swing, JavaFX & SWT 3
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
Hatsi09 JCombobox default wert AWT, Swing, JavaFX & SWT 6
D Swing JCombobox Aktion löscht Grafik AWT, Swing, JavaFX & SWT 1
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
R Swing Java9 NullPointerException bei JComboBox AWT, Swing, JavaFX & SWT 13
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
D Swing JCombobox Weiße Leerzeilen AWT, Swing, JavaFX & SWT 10
G JComboBox: Arrow-Button permanent anzeigen AWT, Swing, JavaFX & SWT 4
D Swing Java JComboBox Example AWT, Swing, JavaFX & SWT 16
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
D Swing "blaues" Element aus JComboBox erhalten AWT, Swing, JavaFX & SWT 6
F JComboBox und Einträge AWT, Swing, JavaFX & SWT 3
gamillton Swing JComboBox mit extra Inhalt + breiteres Popupmenü AWT, Swing, JavaFX & SWT 0
T JPanelsteuerung mit JComboBox AWT, Swing, JavaFX & SWT 5
N Swing Duplikate im Jcombobox vermeiden AWT, Swing, JavaFX & SWT 15
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
C JComboBox Objecte übergeben und Eintrag auswählen AWT, Swing, JavaFX & SWT 3
M Swing JComboBox mit Laufwerksbuchstaben (Windows) AWT, Swing, JavaFX & SWT 6
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
M Alle Schriftarten in JComboBox AWT, Swing, JavaFX & SWT 5
M Swing JComboBox eigenes Design AWT, Swing, JavaFX & SWT 3
Sin137 JComboBox mit Generics AWT, Swing, JavaFX & SWT 14
R JComboBox erweitern AWT, Swing, JavaFX & SWT 5
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
V Editierbare JComboBox AWT, Swing, JavaFX & SWT 2
F neuen Menüpunkt in jcombobox einfügen AWT, Swing, JavaFX & SWT 1
F Swing Jcombobox mit manueller Rückgabe AWT, Swing, JavaFX & SWT 4
W JComboBox auffristen nach Listenänderung AWT, Swing, JavaFX & SWT 20
S JComboBox mit mehreren Spalten? AWT, Swing, JavaFX & SWT 6
J JComboBox + ItemListener AWT, Swing, JavaFX & SWT 12
T Swing jComboBox auslesen mit Datenbankanbindung AWT, Swing, JavaFX & SWT 3
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
H Swing jComboBox Ausgabe -1/null AWT, Swing, JavaFX & SWT 4
C Arrow Farbe bei JComboBox AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
S JComboBox UTF-8 Codierung zuweisen AWT, Swing, JavaFX & SWT 5
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
S JComboBox nach auswahl erneuern AWT, Swing, JavaFX & SWT 4
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
I JComboBox gibt bei ausgewählten ITem NullPointer an... AWT, Swing, JavaFX & SWT 3
D Swing JCombobox - Tooltip Location ändern AWT, Swing, JavaFX & SWT 4
J JComboBox Dropdown Icon AWT, Swing, JavaFX & SWT 2
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
F Swing jComboBox auslesen AWT, Swing, JavaFX & SWT 6
O Swing TableCellRenderer und JComboBox AWT, Swing, JavaFX & SWT 4
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben