Swing ist ein GUI -Toolkit für Java.
Swing ist Teil der Java Basic -Klasse.
Swing enthält Geräte für grafische Benutzeroberflächen (GUI) wie Textfelder, Schaltflächen, Trennungen und Tabellen.
Swing bietet viele bessere Bildschirmanzeigeelemente als AWT. Sie sind in reinem Java geschrieben, damit sie auf Plattformen wie Java selbst rennen können, was nicht wie AWT ist. Sie sind Teil von JFC. Sie unterstützen austauschbare Panels und Themen (spezifische Themen für verschiedene Betriebssysteme), aber anstatt wirklich Geräte zu verwenden, die von nativen Plattformen bereitgestellt werden, ahmen sie sie einfach auf der Oberfläche nach. Dies bedeutet, dass Sie jedes von Java unterstützte Panel auf jeder Plattform verwenden können. Der Nachteil von leichten Komponenten besteht darin, dass sie nur langsam ausgeführt werden, und der Vorteil besteht darin, dass sie ein einheitliches Verhalten auf allen Plattformen einnehmen können.
Schauen wir uns ein einfaches Beispiel für die Implementierung der Taste an:
Import Java.awt.*; Import java.awt.geom.*; import Javax.swing. Dimension size = getPreferredSize (); Größe.width = size.height = Math.max (Größe.Width, Größe.Height); setPreferredSize (Größe); // Dieser Anruf lässt Jbutton den Hintergrund nicht zeichnen, sondern können einen Kreishintergrund zeichnen. setContentareAtedestilliert (falsch); Dieser {G.SetColor (Getbackground ());} G.Filloval (0, 0, getSize (). Breite - 1, getSize (). Höhe - 1); // Dieser Aufruf zeichnet ein Etikett und fokussiert ein Rechteck. Super.PaintComponent (g);} // Verwenden Sie einen einfachen Bogen, um die Grenze der Taste zu zeichnen. Protected Void PaintBorder (Graphics G) {G.SetColor (getforground ()); if (shape == null || !shape.getBounds().equals(getBounds())) {shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight());} return shape.contains(x, y);}// Test program public static void main(String[] args) {// Generate a button with the 'Jackpot' tag. Jbutton Button = new rbutton ("Jackpot"); ImageCon ic = new ImageCon ("e: //clientFormsSql//icons//item_group.gif"); JFrame Frame = new JFrame (); Frame.SetDefaultCloseOperation (jframe.exit_on_close); // Frame.GetContentPane (). Retbackground (color.gray); Frame.GetContentPane (). Add (Button); Frame.GetContentPane (). FlowLayout ()); Frame.Setsize (200, 200); Frame.SetVisible (True);}}Ergebnis:
Als nächstes werde ich ein Java -Beispiel für Schaltflächen teilen, die einfache Klickereignisse implementieren.
Hier ist ein Tipp, um runde Schwungknöpfe zu machen. Tatsächlich ist dieser Trick bequem auf Schaltflächen in jeder Form anwendbar, aber wir erstellen nur einen runden Knopf. Wenn Sie einen runden Knopf machen, müssen Sie zwei Dinge tun. Das erste ist, eine geeignete Zeichenmethode zu überlasten, um einen Kreis zu zeichnen. Die zweite Sache besteht darin, einige Ereignisse so einzustellen, dass die Schaltfläche nur dann reagiert, wenn Sie auf den Bereich der kreisförmigen Taste klicken (nicht auf den Bereich des Rechtecks, der die kreisförmige Taste enthält).
Import Java.awt.*; Import Java.awt.Geom.*; Import Javax.swing. Dimension size = getPreferredSize (); Größe.width = size.height = Math.max (Größe.Width, Größe.Height); setPreferredSize (Größe); // Dieser Anruf lässt Jbutton den Hintergrund nicht zeichnen, sondern können einen Kreishintergrund zeichnen. setContentareafilled (false);} // Zeichnen Sie den Hintergrund und Etikett des geschützten void -paintkomponenten (Graphics g) {if (getModel (). 0, getSize (). Breite - 1, getSize (). Höhe - 1); // Dieser Anruf zeichnet ein Etikett und fokussiert Rechteck. Super.PaintComponent (g);} // Verwenden Sie einen einfachen Bogen, um die Grenze der Taste zu zeichnen. Protected Void PaintBorder (Graphics G) {G.SetColor (getforground ()); if (shape == null || !shape.getBounds().equals(getBounds())) {shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight());} return shape.contains(x, y);}// Test program public static void main(String[] args) {// Generate a button with the 'Jackpot' tag. Jbutton Button = neuer RoundButton ("Jackpot"); Button JFrame Frame = new Jframe (); Frame.GetContentPane (). Retbackground (color.yble); Frame.GetContentPane (). Add (button); Frame.GetContentPane (). SetLayout (new FlowLayout ()); Frame.Setsize (150, 150);Ergebnis:
Klicken Sie auf Ereignis:
Da wir den größten Teil der Funktionalität von Jbutton bewahren wollen, lassen wir die Rundbutton -Klasse die Jbutton -Klasse erben. Im Roundbutton -Konstruktor wird die setContentareAnte -modische () -Methode aufgerufen. Dadurch zieht der Knopf einen rechteckigen Fokusbereich, nicht den Hintergrund.
Jetzt müssen wir einen Kreishintergrund zeichnen. Dies wird erreicht, indem die Methode PaintComponent () überlastet wird. Diese Methode verwendet die Methode Grafik.Filloval (), um einen soliden Kreis zu zeichnen. Anschließend ruft die Methode PaintComponent () Super.PaintComponent () auf, um ein Etikett auf den festen Kreis zu zeichnen.
Dieses Beispiel überschreibt auch die Methode PaintBorder (), um eine Kante an der Grenze der kreisförmigen Taste zu zeichnen. Wenn Sie keine Grenzen wollen, können Sie diese Methode auch nicht überladen. Diese Methode ruft die Grafik auf. DDAWOVAL () -Methode, um einen dünnen Rand an der Grenze des Kreises zu zeichnen.
HINWEIS: In Jdktm1.2.2 hat das Verhalten von Jbutton einen kleinen Fehler. Theoretisch sollte die Schaltfläche die Form ändern, wenn Sie auf die Maus auf der kreisförmigen Taste klicken und dann die Maus von der Grenze der Taste ziehen. Wenn Sie die Maus in die Grenze der Taste ziehen, sollte die Taste auf ihre Form antworten. Leider kann der Code, der dieses Verhalten enthält, die Methode containes () nicht aufrufen. Stattdessen soll nur der "Grenzbereich" der Taste verwendet werden (was der minimale rechteckige Bereich ist, der die Taste enthält). Beachten Sie, dass, wenn Sie die Maus leicht in die Grenze des Kreises ziehen, dh den Bereich des Kreises, nicht die Grenze, die Knopf nicht ändert.
Zusammenfassen
Das obige ist der Inhalt dieses Artikels über Java -Programmierung zum Implementieren von Swing -Rund -Button -Instanzcode. Ich hoffe, dass er für alle hilfreich sein wird. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!