Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe eine DropdownBox, zu der nach Auswahl eines bestimmten Items Elemente hinzugefügt werden und, wenn nötig, einsortiert werden. Das funktioniert auch. Dabei klappt sich die Box allerdings zu. Wie kann ich es realisieren, dass die Box auf bleibt oder aber direkt danach von selbst wieder auf geht? Habe schon probiert am Ende ein jCombobox1.showPopup() bzw. requestFocus() aufzurufen, doch das funktioniert nicht richtig.
Java:
@Override
public void itemStateChanged(ItemEvent e)
{
Collection<IConnection> connections = helper.getServerData().getConnections();
if (e.getStateChange() == ItemEvent.SELECTED)
{
//hier die Sortierung und das Einfügen von Items
//jComboBox1.requestFocus();
//jComboBox1.showPopup();
}
}
Das ist ja im Prinzip genau das, was ich mache. Der Unterschied liegt hier nur darin, dass ich nicht mit dem Model direkt arbeite, sondern per addItem und removeItem die Dinger hinzufüge/lösche. Sonst noch eine Idee?
Java:
@Override
public void itemStateChanged(ItemEvent e)
{
Collection<IConnection> connections = helper.getServerData().getConnections();
if (e.getStateChange() == ItemEvent.SELECTED)
{
if (e.getItem().toString().equals(NEWCONN))
{
new LoginFrame().setVisible(true);
} else if (e.getItem() instanceof IConnection)
{
IConnection iConn = (IConnection) e.getItem();
//Hier die Sortierung
jComboBox1.addItem(NEWCONN);
jComboBox1.validate();
jComboBox1.showPopup();
}...
Nun, ich habe nun versucht im Model die Sortierung, sprich: das Hinzufügen und Löschen von Elementen vorzunehmen, und danach die Box zu öffnen. Leider mit ebenso wenig Erfolg wie bisher. Kann es irgendwie sein, dass der "klick" noch nicht abgeschlossen ist, also der ItemListener nach dem mousedown aber vor dem mouseup-event benachrichtigt wird und esa deshalb nicht funzt? :bahnhof: Nur mal so ne Idee...
Ok, ich habe das Probloem jetzt behoben... oder besser gesagt: umgangen. Für die, die vielleicht ein ähnliches Problem haben:
Ich validiere die Combobox und öffne das Popup aus einem anderen Thread heraus. Finde ich nicht unbedingt schön, aber etwas anderes habe ich nicht finden können:
Java:
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
try
{
Thread.sleep(200);
} catch (InterruptedException ex)
{
Exceptions.printStackTrace(ex);
}
jComboBox1.validate();
jComboBox1.showPopup();
}
});
t.start();