Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Jetzt lerne ich Java 6

JComboBox

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die ComboBox ist eine ausklappbare Auswahl-Liste, in der ein oder mehrere Elemente selektiert werden können. Der Benutzer kann sogar eigene Elemente eingeben.
17:16

Transkript

Schauen wir uns in dieser Lektion ein Element an, was wir häufig brauchen und zwar die sogenannte JComboBox. Im AWT gab es kein richtiges Pendant zur JComboBox. Es gibt das Element choice, aber Sie haben zum Beispiel bei choice nicht die Möglichkeit Inhalte noch zu editieren. Das ist eine ComboBox. Sie möchten bei einer Eingabe mehrere Werte dem Benutzer zur Auswahl vorlegen. Die ComboBox stellt dafür ein Pull-Down-Menü zur Verfügung. Sie haben sogar die Möglichkeit bei einer JComboBox entsprechend das Ganze auf editierbar zu setzen, so dass entweder der User einen dieser Werte auswählen kann oder entsprechend das Ganze als Textfeld nutzen kann und dann im weiteren Wert einfach eintippen kann. Wir wollen uns beides hier anschauen und werden hierfür eine JComboBox anzeigen lassen, die einfach Deutschland, Österreich, Schweiz als Werte vorgibt. Später werden wir das dann noch editierbar machen. Die Werte, die unsere JComboBox anzeigen soll, liegen in einem String Array und daher liegen wir uns als allerersten Schritt einmal ein String Array hier an. Nennen wir das einfach mal Werte und belegen das direkt vor mit den passenden Werten. Deutschland, Österreich und die dritte Auswahlmöglichkeit wäre die Schweiz, okay. Im nächsten Schritt müssen wir unsere ComboBox ins Leben rufen, aber am besten deklarieren wir das Ganze hier oben schon mal. Nennen wir das Ganze einfach box. Es ist vom Typ JComboBox, das Ganze soll box heissen. Dann können wir hier jetzt nach box eine ins Leben rufen und zwar eine neue Instanz von JComboBox. Hier ist es natürlich wieder interessant sich anzuschauen, was kann man alles damit machen, was für Konstruktoren gibt es und den Konstruktor, den ich hier einfach verwende. Weitere, wie gesagt, finden Sie in der Doku, ist der, dass ich einfach direkt schon mal die Werte übergebe. Ich also die Werte jetzt hier direkt übergebe, werden diese direkt in der ComboBox eingetragen. Das war es eigentlich für den ersten Schritt. Wir werden das Ganze jetzt der ContentPane hinzufügen und uns dann einfach direkt mal anschauen. Es wird auf der Tastatur getippt. Okay, und Sie sehen wir haben jetzt hier eine Auswahl, die wir treffen können. Was mich jetzt noch stört, ist das Ganze so riesiges, auch hier habe ich vergessen, den in den Schließmechanismus zu implementieren. Also wir haben noch ein paar kleine Schönheitskorrekturen. Zuerst mal Windows schließen, this.setDefaultCloseOperation ableiten aus JFrame.EXIT_ON_CLOSE und dann können wir das Ganze auch anständig schließen. Und das Nächste, was wir hier noch tun wollen SDN Layout Manager für die ContentPane einfach ausschalten, also auf null setzen und dann können wir unser box nämlich schon jetzt setSize entsprechend skalieren, wir sagen einfach mal, hätten gerne eine Breite von 100, eine Höhe von 15, das jetzt nicht ganz wie das aussieht und dann rücken wir das noch ein bisschen von oben von der Ecke weg, sagen wir das einfach zehn zehn und schauen wir uns das Ganze einfach noch mal an und dann sieht das Ganze schon etwas besser aus. Voilà, gut. Im nächsten Schritt, werden wir das Ganze editierbar machen hier, vileicht die Kurse doch noch auf 20. Um das Ganze editierbar zu machen, schreiben wir hier oben wirklich schon in unseren Eigenschaften und setzen einfach mit der Methode setEditable true das Ganze auf bearbeitbar. Schauen wir uns das Ganze wieder an können wir noch auswählen aber wenn wir hier wirklich hineingehen können wir wirklich auch anderen Landesname eintragen. Jetzt möchten wir natürlich auch die Werte hier drin entsprechend noch auslesen können dafür können wir ein EventListener implementieren. JComboBox wirft ganz normal eine Action und in Anbetracht dessen können wir den ganz normalen ActionListener die wir schon mehrfach verwendet haben, auch hier einsetzen. Das heißt wir brauchen wieder eine Klasse, eine Innere Klasse die wir einfach benennen mit Auswahl schreiben wir das großes, klasse und die implementiert einen ActionListener entsprechend müssen wir jetzt in import hier oben, auf java.awt.event erweitern dass wir auch entsprechende ActionListeners bekommen, dann können wir jetzt hier unsere Klasse definieren actionPerformed kommt ein ActionEvent mit, dass wir e nennen und entsprechend können wir hier jetzt unsere Bearbeitung durchfüren. Bevor wir jetzt, hier groß loslegen, lassen wir uns einfach eine Ausgabe auf die Konsole schreiben System.out.println("Auswahl") ; box.addActionListener( new Auswahl ) ; und wir werden jetzt hier ensprechend mit addActionListener unsere Klasse Auswahl, entsprechend hier oben registrieren. Okay, schauen wir uns mal das Ganze an. Sollten wir natürlich eine Konsole parallel aufmachen, weil ich jetzt hier was wähle und also entsprechend das Ganze hier ausgelöst. Um jetzt herauszufinden, welcher Eintrag gewählt wurde, werden wir an dieser Stelle etwas tricksen. Wir gehen einfach hier in unseren ActionListener und wir bekommen ja das ActionEvent hier als e geliefert. Was wir im ersten Schritt jetzt tun, ist uns eine lokale Instanz noch einmal zu holen, von unserer ComboBox. Denn aus e können wir mit Hilfe von getSource eine Referenz auf das auslösende Objekt bekommen. Schauen wir uns das einfach an, vom Prinzip her, es ist eine JComboBox. Die nennen wir jetzt einfach mal item und holen uns jetzt aus e mit getSource entsprecnend die Quelle. Jetzt bekommen wir noch einen Fehler an dieser Stelle. Denn wir haben im Moment das Problem, dass wir ein Objekt bekommen und eine ComboBox haben wollen. Das können wir einfach über Casting lösen, das heißt wandeln das jetzt hier einfach um über Casting in eine ComboBox. Ich denke, wenn man sich das ein bisschen auf der Zunge zergehen lässt, ist es logisch, was wir hier tun. Wir wandeln wirklich das Action-Objekt, was wir hier bekommen, holen uns hier die Quelle und wandeln das in eine ComboBox um. Und damit haben wir jetzt sozusagen ein Abbild der ComboBox, genauso wie sie ausgelöst hat, hier innerhalb dieser Methode und entsprechend das können wir jetzt nutzen. Und das Letzte, was wir jetzt eigentlich tun müssen, ist, wir müssen einfach den ausgewählten Wert uns holen. Dabei müssen wir hier doch unterscheiden, wir haben ja unsere ComboBox bearbeitbar gemacht. Es kann jetzt einen Inhalt ausgewählt worden sein, dann bekommen wir eine Indexzahl zurück Eintrag eins, zwei, drei oder entsprechend ausgewählt. Das wäre kein Problem, aber es könnte ja auch etwas eingegeben worden sein und dann müssen wir entsprechend in String auslesen. und daher zeige ich Ihnen einfach das Konstrukt, wie gesagt, das brauchen Sie nur, wenn Sie hier oben das Ganze auf bearbeitbar gestellt haben, wenn nicht, lesen Sie einfach nur die Indexzahl aus. Das machen wir jetzt auch, direkt im ersten Schritt wir prüfen zuerst mal aus item und das ist wie gesagt jetzt wirklich die gleiche Instanz der Combobox, die das Ereignis ausgelöst hat, mit getSelected. Und jetzt sehen Sie hier zum Beispiel getSelectedIndex. Was für eine Indexnummer gewählt worden ist? Und bei den ComboBoxen ist es so, dass wenn ein vorhandener Wert ausgewählt worden ist, er hat den Index verzögert, also null bis der Indexwert, der gewählt worden ist. Wenn was selbst eingegeben wurde, damit minus eins zurückgegeben. Das heißt, dann wiessen wir, jemand hat was selbst eingegeben. Das heißt wir prüfen jetzt bei der F4 ob das Ganze größer als minus eins ist. Wenn das größer als minus eins ist, dann ist die Sache schon relativ einfach. Das können wir uns hier direkt dokumentarisch reinschreiben: Es wurde ein fertiger Wert gewählt. Denn dann haben wir den Index zurückbekommen. Und dann können wir einfach hier in dieser Stelle sagen: Der Wert ist gleich item. Jetzt können wir mit getSelectedItem entsprechen uns das Ganze holen. Was wir aber zurückbekommen, ist wieder ein Objekt. Das hatten wir schon mal hier oben. Hier sollten wir vorschreiben: Das ist ein String-Wert. Dann sollten wir hier das Ganze entsprechend in einen String Casten. Das heißt, wir holen uns hier ein Objekt, wandeln das um in einen String und speichern das als String. Bis zu der Stelle, sehen wir also klar, okay, es wurde einer der vorgegebene Indexwert gewählt. Wenn das nicht so ist, dann hat jemand was selbst eingegeben, auch das müssen wir hier sprechender noch auslesen: Jemand hat eine eigene Angaben gemacht. Dann bekommen wir wieder einen String und lesen das wieder aus item aus. Wir brauchen Editor. Dann holen wir mal uns das entsprechende Item und wandeln das Ganze diesmal mit der Methode in einen String. Das sind also die beiden Wege, die es gibt, eigene Eingabe oder bei Indexnummer und wenn Sie eben das Feld nicht editierbar machen reicht allein dieser Wert. Und da wir hier zu viel Mühe haben, sollten wir hier unten mit System.out.println und das Ganze entsprechend noch ausgeben lassen. System.out.println ("Es wurde folgendes gewählt: " + wert ) ; Der Stelle, haben wir jetzt uns natürlich kurz ins Bein geschossen, denn wir haben hier deklariert und definiert. Daher sollten wir das Ganze schnell hier nach oben schaffen an der Stelle wert deklarieren als String entsprechend das Ganze hier weg machen und dann können wir das Ganze auch auslesen. Gut, schauen wir uns mal das ganze Beispiel wieder als Applikation an, dafür machen wir gleichzeitig eine Konsole auf. Ich wähle jetzt was aus zum Beispiel Österreich, ich bekomme Österreich, Schweiz, Deutschland. Das heißt, hier oben der Block, Größe minus eins funktioniert schon. Jetzt gehen wir einfach rein und schreiben Frankreich, drücken enter und entsprechend kommt dann auch Frankreich raus. Das war jetzt harter Tobak, aber ich denke mit ein bisschen Übung und ein bisschen Dokumentation Studium wird es auch für Sie bald kein Problem mehr sein.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!