automatische Auswahl einer JComboBox

nieselfriem

Bekanntes Mitglied
Hallo!

Ich habe eine JComboBox die durch eine Auswahl bei einer anderen JComboBox mit Daten befüllt wird. Nun soll, wenn der Nutzer nichts anderes anklickt, der erste Eintrag als selektiert werden, so dass der Wert bei einem z.B. Speicherbutton übernommen wird. Momentan muss ich noch den Eintrag mit der Maus erst anklicken um diesen Wert in einer Variable zu speichern.

Danke!
 
@nieselfriem
so dass der Wert bei einem z.B. Speicherbutton übernommen wird.
Ich weiß ja nicht genau, was du damit gemeint hast, aber falls du möchtest, dass das selbe geschieht, wie wenn der Benutzer bei der Combobox das 1. Item auswählt (um irgende Variable, womöglich String nen Wert zu geben, der dann bei einem Klick auf den Speicherbutton wo abgespeichert wird), dann folgendes:
Java:
public class Test implements ItemListener {
	protected String item[];
	protected JComboBox cmbobx;
	
	public Test() {
		item = new String[] {"Item 1", "Item 2", "Item 3"};
		
		cmbobx = new JComboBox();
		cmbobx.setModel(new DefaultComboBoxModel(item));
		cmbobx.addItemListener(this);
	}
	@Override
	public void itemStateChanged(ItemEvent evt) {
		if(evt.getSource().equals(cmbobx)) {
			if(evt.getItem().equals(item[0])) {
				doAction(0);
			}
			if(evt.getItem().equals(item[1])) {
				doAction(1);
			}
			if(evt.getItem().equals(item[2])) {
				doAction(2);
			}
			/*
			 * ODER in einer for-Schleife:
			 */
			for(int i=0; i<item.length; i++) {
				if(evt.getItem().equals(item[i])) {
					doAction(i);
				}
			}
		}
	}
	
	protected void doAction(int item) {
		switch(item) {
			case 0 : /*Aktion des 1. Items: Speichere was*/ break;
			case 1 : /*Aktion des 2. Items: Speichere was*/ break;
			case 2 : /*Aktion des 3. Items: Speichere was*/ break;
		}
	}
}

Wenn der Benutzer nichts anderes anklickt:
Java:
//...
cmbobx.setSelectedIndex(0);
doAction(0);
//...

Ich hoffe ich habe dich so richtig verstanden! 🙂
 
nicht ganz.

Um Es zu erklären. Es geht um Arbeitgeber. Fast jeder dieser Arbeitgeber hat einen Ansprechpartner. Wenn nun in einer JCombobox ein Arbeitgeber ausgewählt wird, so erscheint die jComboBox der Ansprechpartner von diesem entsprechenen Arbeitgeber. Ist nur ein Ansprechpartner vorhanden oder keine Auswahl vom Nutzer gemacht worden, so soll der erste oder der einzige zwangsläufig als ausgewählt gelten. Momentan muss jedoch noch einmal mit der Maus auf die auswahl geklickt werden, obwohl schon der Ansprechpartner in der Liste zu sehen ist.

Gruß
 
Dann vielleicht, indem du das Model fragst:
Java:
DefaultComboBoxModel model = (DefaultComboBoxModel)comboBox.getModel();
Object obj = model.getSelectedItem();

Diese Stelle
GUI-Programmer hat gesagt.:
[JAVA=8] cmbobx = new JComboBox();
cmbobx.setModel(new DefaultComboBoxModel(item));[/code]
lässt sich auch abkürzen:
[JAVA=8] cmbobx = new JComboBox(item);[/code]
 
Das wird nicht ganz Klappen. In der ComboBox werden Elemente von einem Datentyp gespeichert und mit einem Renderer so dargestellt, dass als Sicht der Name zu sehene ist und als Rückgabe der Entsprechende Wert bzw Id
Der Datentyp in der JComboBox
Java:
public class AnsprPSchnDlg {
    private String ansprechpartner;
    private String anrede;
    private int id;

    public String getAnrede() {
        return anrede;
    }

    public void setAnrede(String anrede) {
        this.anrede = anrede;
    }

    public AnsprPSchnDlg(String ansprechpartner, int id) {
        this.ansprechpartner = ansprechpartner;
        this.id = id;
    }

    public AnsprPSchnDlg() {
    }
    /**
     * Diese Methode liefert den String fuer die sichbare Ausgabe in der Combobox in der Schnellauswahl 
     * des Ansprechpartners in einem Aenderungsdialog in der GUI
     */    

    @Override
    public String toString() {
        if(this.ansprechpartner.length() > 0 ) {
            return this.anrede+" "+this.ansprechpartner;
        }else {
            return "";
        }
     }

    public String getAnsprechpartner() {
        return this.ansprechpartner;
    }
    public void setAnsprechpartner(String ansprechpartner) {
        this.ansprechpartner = ansprechpartner;
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

der Renderer:
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
import empathie.PersonUndJob.AGSchnDlg;

public class AgCbxDlgRndr extends BasicComboBoxRenderer {

    @Override
    public Component getListCellRendererComponent(
            JList list, Object value, int index,
            boolean isSelected, boolean cellHasFocus) {
        super.getListCellRendererComponent(list, value, index,
                isSelected, cellHasFocus);

        // if (value != null)
        if (index == -1) {
           

            AGSchnDlg item = (AGSchnDlg) value;
            setText(item.toString());
        }
        if (value != null) //if (index == -1)
        {

            AGSchnDlg item = (AGSchnDlg) value;
            setText("" + item.toString());
        }
        return this;
    }
}

Grüße
 
Die Frage ist doch eigentlich, was das Model der ComboBox zurückgibt.
Die Variante, die ich oben benutzt habe funktioniert so, wie du es haben möchtest.
Du musst das Model fragen, wo die Selektion steht.
 
Ok, ich habs:

Java:
            DefaultComboBoxModel model = (DefaultComboBoxModel)jAnsprechDlgCbBx.getModel();
            Object obj = model.getSelectedItem();
            AnsprPSchnDlg ansp = (AnsprPSchnDlg) obj;
            ansp.getId()//Id

Danke an alle!
 

Zurück
Oben