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

JButton

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Neben JLabel ist auch JButton eine wichtige Komponente von Swing. Diese Lektion bringt Ihnen die zahlreichen Gestaltungsmöglichkeiten für JButtons näher.
16:10

Transkript

In dieser Lektion werden wir uns mit dem JButton beschäftigen, also der ganz normalen Schaltfläche, eben diesmal aus dem Swing Kontext und nicht AWT. Vom Prinzip her macht der Button haargenau das Gleiche, egal ob AWT oder Swing, aber dadurch, dass der JButton entsprechend von JComponent abgeleitet ist, hat dieser zum Beispiel auch Möglichkeiten wie zum Beispiel Icons anzeigen zu können. Ich habe mir hier wiederum eine kleine Swing Klasse vorbereitet, aber das kennen Sie ja bereits. Wir werden uns also jetzt im Ersten anschauen, wie wir Buttons instanzieren können, vielleicht direkt auch mal mit einem Null Layout und der festen Vergabe von Größe und Position. Anschließend werden wir den Button mit einem Icon versehen. Auch das dürfte jetzt für Sie nichts Kompliziertes mehr sein. Dann werden wir ein Tastenkürzel auf den Button legen, denn das ist gerade beim Ausfüllen größerer Formulare ganz angenehm, dass man direkt wirklich Buttons anspringen kann. Diese Tastenkürzel werden Sie auch in anderen Kontexten immer wieder haben, daher ist das ein ganz gutes Beispiel. Und zum Schluss werden wir natürlich dann noch einen passenden Listener für Events auf diese Buttons legen. Also wir haben viel zu tun, legen wir los. Da wir später Events brauchen werden, sollten wir vielleicht direkt hier oben schon den passenden "import" setzen, Das heißt, wir geben nach "java.awt.event" und hier ist genau das, was ich in der Einführung bereits gesagt habe. Wir haben hier eine Überschneidung, das heißt, Event Handling wird immer noch aus dem AWT genutzt. In Anbetracht dessen ist das eigentlich weit bekannt. Gut, im ersten Schritt werden wir später Event Handling machen, werden wir unsere Komponenten entsprechend hier bereits deklarieren, und zwar als Instanz Variablen, also wir wollen JButton, einen JButton haben, den wir "button1" nennen, und wir wollen direkt auch einen Zweiten, "button2". Ja okay, damit sind diese bekannt gemacht und sind in der ganzen Klasse entsprechend jetzt bekannt. Gut, anschließend gehen wir hier in den vorbereiteten Konstruktor hinein und wir setzen einfach mit "setTitle" entsprechend die Überschrift immer wieder "Herzlich Willkommen zu Swing". Anschließend wollen wir ein Null Layout haben. Denken Sie diesmal daran, zuerst die ContentPane sich zu holen und dann mit setLayout entsprechend dann den LayoutManager zu holen. Woher kommt der? Der LayoutManager an sich kommt aus AWT, das heißt, hier oben sollten wir den direkt auch noch importieren. Brauchen wir natürlich an dieser Stelle nicht, klar. Wir nehmen ein Null Layout, falls wir also einen anderen LayoutManager nehmen würden, dann bräuchten wir das an dieser Stelle mit einem Null Layout, das ist Blödsinn, okay. Im nächsten Schritt instanzieren wir uns ein paar Buttons, nennen den Button "Klick mich" und später wollen wir noch einen zweiten Button haben, den nennen wir einfach "oder mich". Und dann machen wir bei Button1 weiter, der soll eine feste Größe bekommen. Also verwenden wir hier "setSize" und setzen den entsprechend auf "130, 40,". Anschließend wollen wir den auch noch positionieren. Dafür können wir "setLocation" dann direkt verwenden. Einfach vom oberen Rand ein bisschen wegrücken, ich denke "10, 10". Und weil das Ganze so schön war, kopieren wir uns das auch für den zweiten Button. Müssen wir hier vorne natürlich Instanznamen umbenennen. Die Größe ist Okay, aber die Location müssen wir natürlich auch entsprechend jetzt anpassen auf, ja, "150" in der X Position. Wenn Sie später komplexere Oberflächen gestalten, werden Sie vermutlich einen grafischen Editor hierzu verwenden. Dieser macht nichts anderes, als dass Sie eine grafische Oberfläche haben, auf der Sie Komponenten einfach schieben können und anordnen können und im Hintergrund werden die Eigenschaften entsprechend für Sie dann im Quellcode geschrieben. Eclipse selbst bringt einen solchen Editor nicht direkt mit, aber Sie können diesen als Zusatz laden, der nennt sich Visual Edit, VE und viele andere, auch freie Editoren wie zum Beispiel NetBeans, bringen solche Editoren oder Designer, wie sie sich manchmal nennen, auch entsprechend mit. Dann müssen Sie nicht ausrechnen, wo jetzt entsprechend ein Knopf liegt. Für unseren Fall hier reicht das noch völlig. Wir haben also jetzt zwei Knöpfe mit Größe und Position und als nächstes werden wir diese Knöpfe entsprechend unserer Content Pane hinzufügen: "this.getContentPane", das sollte mittlerweile drin sein, dann "add" und entsprechend nehmen wir uns "button1" und das Ganze machen wir dann noch entsprechend für den "button2". Okay. Speichern das und lassen das Ganze mal als Applikation ausführen und schon haben wir zwei wunderschöne Knöpfe. So weit, so gut. Im nächsten Schritt möchten wir diesen Knöpfen gerne ein Icon verpassen. Hierfür müssen Sie, genau wie wir das auch bei Label gemacht haben, entsprechend die Grafiken für die Icons in den Ordner Ihres späteren Classfalls kopieren, sonst kann diese Java Applikation das Ganze nicht finden. Beenden wir das Ganze. In Anbetracht dessen wechseln wir wieder in den Workspace. Hier hinein, dann brauchen wir einen Grafikenordner, in unseren Grafiken, wir haben hier auch GIF-Grafiken vorbereitet. Wir wollen einen "OK" und einen "Cancel" Button gestalten, das heißt, ich habe hier jetzt zwei Gif-Grafiken, die sind in der gleichen Größe, die ich hier einfach reinkopiere. Anschließend können wir diese jetzt aus Java heraus verwenden. Wie das funktioniert wissen Sie bereits, das haben Sie nämlich schonmal gemacht, und zwar bei den JLabels. Probieren Sie es einfach selbst und drücken am besten dafür jetzt die Pause. Okay, ich habe gemerkt Sie haben geschummelt, Sie haben es nicht selbst versucht, deshalb werde ich es Ihnen jetzt trotzdem nochmal zeigen. Diesmal mache ich es jedoch in einer Zeile. Ich benutze direkt die Methode setIcon, aber anstatt eine eigene Image Icon Instanz ins Leben zu rufen, mache ich das einfach mit einer anonymen Klasse, also "new ImageIcon", verwende dann den entsprechenden Konstrukror, bei dem ich dann einfach das Filename angebe. Das ist das Ganze in kurz und knackig. Das machen wir jetzt auch noch für Button2. Das wird nicht funktionieren. Unsere GIF-Grafik heißt nämlich "cancel". Okay, testen wir das Ganze. Und Sie sehen, wir haben jetzt hier entsprechend unsere Icons. Wir können jetzt natürlich hier die Knopfbreite noch etwas hochsetzen, also das Ganze ist hier ja etwas eng, aber für unseren Fall reicht das im Moment hier. Okay. Das heißt, Sie haben jetzt gesehen, wie einfach Sie entsprechend jetzt auch Grafiken hier auf die Buttons anwenden können. Und wie gesagt, bei anderen Komponenten, die auch von JComponents abstammen, gibt es diese Methode auch, Näheres dazu finden Sie in der Doku und entsprechend können Sie dann auch diese Icons verwenden. Im nächsten Schritt werden wir jetzt noch ein Tastenkürzel definieren. Und zwar wäre es doch ganz schön, dass wenn wir "K" drücken, wir den linken Knopf hier auswählen und bei "O" den rechten. Also auch das sollten wir jetzt als nächstes durchführen. Und natürlich eine Windows Close Operation sollten wir als allererstes noch einführen, dass ich nicht dauernd das Ganze schließen muss, "this.setDefaultCloseOperation" "JFrame.Exit_On_Close". Okay, dann sollte das gegessen sein. Und wir sollten jetzt das Ganze speichern, Okay. Ja, und jetzt beendet sich auch das Programm korrekt. Also, zurück zu den Tastenkürzeln, die wir jetzt zu den Knöpfen hinzufügen wollen. Um ein eigenes Tastenkürzel zu vergeben können wir eine eigene Methode dafür verwenden, und zwar die Methoide "setMnemonic". Das ist englische Wort für Eselsbrücke, das ist ganz praktisch. Und anstatt jetzt hier einfach einen Buchstaben zu übergeben, übergeben wir einfach eine Konstante aus dem Objekt "KeyEvent". Ich möchte gerne hier das "K" mit Alt + K gerne als Tastenkürzel haben, daher nehmen wir einfach die Konstante "VK_K". Das ist dann also die Konstante für die K-Taste zusammen mit Alt. Das Ganze machen wir auch noch für den Button2. Auch hier nehmen wir das "KeyEvent VK_O" wäre hier ganz gut für das "Oder". Nachdem wir das gemacht haben, lassen wir das Ganze ausführen. Sie sehen jetzt auch schon die unterstrichenen Buchstaben, das heißt, an der Stelle wirken Tastenkürzel. Wenn ich jetzt mit der Alt-Taste zusammen K und O drücke, sehen Sie auch, dass entsprechend jetzt meine Tasten angesprochen werden. So weit, so gut. Im Weiteren wollen wir jetzt natürlich unseren Knöpfen auch noch einen Listener verpassen, damit wir auf die Knöpfe auch entsprechend reagieren können. Logischerweise brauchen wir dafür Events, gerade noch nachschauen. Ja, "awt.event" ist importiert, das heißt, wir können hier einfach mal eine innere Klasse anlegen und das ist jetzt genau wie im AWT. Es gibt also keinerlei Unterschiede, denn es ist AWT. "KnopfAktionen" wir implementieren einen ActionListener. Und dafür müssen wir die Methode actionPerformed dem passenden Übergabeparameter "ActionEvent" überschreiben. Okay. Da wir zwei Knöpfe haben, aber für beide Knöpfe eine Instanz von KnopfAktionen zuweisen werden, müssen wir zuerst einmal feststellen, welcher Knopf gedrückt worden ist. Das haben Sie schon gelernt in der Eventbehandlung beim AWT, daher setze ich das jetzt einfach so voraus. Wir gehen jetzt also hier an unser ActionEvent ran, lesen uns mit "getActionCommand" entsprechend das Ganze aus und als nächstes wollen wir ja auf unseren "button1" referenzieren mit "get.Text". Das ist in soweit jetzt neu, dass wir wirklich hier mit get.Text auch die Beschriftung dann entsprechend immer auslesen können bei den Komponenten. Falls Sie hier einen Fehler bekommen, dass Button1 nicht sichtbar ist, kontrollieren Sie bitte, ob hier das Ganze auch in Instanzvariablen entsprechend deklariert worden ist. Okay. Und entsprechend setzen wir jetzt einfach vor den "button1 set.Text" einfach ein "Danke!", dass der Knopf gedrückt worden ist. Und weil das Ganze so schön war, machen wir das für den zweiten Button auch noch. Okay. Jetzt haben wir also einen ActionListener, mit dem schönen Namen "KnopfAktionen", und diesen müssen wir natürlich zuweisen. Also gehen wir hier oben in den Konstruktor hinter die Events und weisen nun unserem "button1" mit "addActionListener" entsprechend eine neue Instanz von KnopfAktionen" zu. Und das Ganze machen wir dann natürlich auch noch für unseren zweiten Knopf. So, das müsste es gewesen sein. Testen wir das Ganze. Ich klicke jetzt mal den Knopf hier an, "oder mich" steht im Moment drauf. Okay, "Danke!", und dieser Knopf bedankt sich auch. Wunderbar. Ich denke, in dieser Lektion haben Sie gesehen, was Sie alles mit JButtons alles so anfangen können und den Rest können Sie einfach in der Dokumentation nachschauen.

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!