{"id":2360,"date":"2013-09-22T12:34:54","date_gmt":"2013-09-22T10:34:54","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=2360"},"modified":"2013-09-22T12:34:54","modified_gmt":"2013-09-22T10:34:54","slug":"selbst-definierte-cursor-in-awtswing","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/09\/selbst-definierte-cursor-in-awtswing\/","title":{"rendered":"Selbst definierte Cursor in AWT\/Swing"},"content":{"rendered":"<p>Bei einem Cursor sind wir nicht allein auf die vordefinierten Muster angewiesen. Leicht l\u00e4sst sich aus einer Grafik ein eigener Cursor definieren. Dazu bietet das Toolkit die Methode createCustomCursor() an. Als Argument geben wir ein Image-Objekt, einen Hotspot und einen Namen an. Der Hotspot definiert eine Art Nullpunkt, der die Spitze angibt. Zeigt etwa der Standardcursor mit einem Pfeil nicht wie \u00fcblich nach oben, sondern nach unten, so gibt der untere Punkt den Nullpunkt an. Der Name ist nur n\u00f6tig, wenn Java-Accessibility genutzt wird, also eine M\u00f6glichkeit gegeben ist, den Cursor zum Beispiel ohne Maus anzusprechen.<\/p>\n<p><b>Beispiel:<\/b> Weise einer java.awt.Component den Cursor mit der Grafik cursor.gif und dem Hotspot auf (10,10) zu.<\/p>\n<pre>Cursor c = getToolkit().createCustomCursor(\nnew ImageIcon( &quot;cursor.gif&quot; ).getImage(),\nnew Point(10,10), &quot;Cursor&quot; );\ncomponent.setCursor( c );<\/pre>\n<p>Hinweis Animierte Cursor bietet die Java-Umgebung nicht an. Wir k\u00f6nnten selbstst\u00e4ndig in einem Thread immer wieder mit setCursor() unterschiedliche Cursor setzen, um etwa eine drehende Sanduhr oder eine rotierende Festplatte zu bekommen.<\/p>\n<p>Da grafische Oberfl\u00e4chen in der Regel keine Cursor beliebiger Aufl\u00f6sung und Farbanzahl zulassen, l\u00e4sst sich das Toolkit auch \u00fcber diese Gr\u00f6\u00dfen erfragen. Die Methode getBestCursorSize() liefert die m\u00f6gliche Gr\u00f6\u00dfe des Cursors zur\u00fcck. Es ist sinnvoll, diese Methode vorher aufzurufen, um ein passendes Bild auszuw\u00e4hlen. \u00c4hnlich wie bei den Icons in der Titelleiste werden die Grafiken sonst skaliert, was nicht unbedingt sch\u00f6n aussehen muss. Gleiches gilt f\u00fcr die Farben. Nicht alle Systeme erlauben beliebig viele Farben f\u00fcr den Cursor. Die maximale Farbanzahl liefert die Funktion getMaximumCursorColors(). Notfalls wird der Cursor auf die Farbanzahl heruntergerechnet.<\/p>\n<p><b>Tipp:<\/b> Unterst\u00fctzt die Plattform Cursor beliebiger Gr\u00f6\u00dfe, so l\u00e4sst sich dadurch einfach eine Bubble-Help realisieren, die nicht rechteckig ist. An Stelle des Cursors wird eine Grafik mit dem Cursor zusammen mit einer Hilfe angezeigt. Das Betriebssystem verwaltet den Cursor, und wir m\u00fcssen den Hintergrund nicht sichern und mit der Hilfe verkn\u00fcpfen.<\/p>\n<p><b>abstract class java.awt.Toolkit<\/b><\/p>\n<ul>\n<li><b>Cursor createCustomCursor( Image cursor, Point hotSpot, String name )<br \/>\n      <br \/><\/b>throws IndexOutOfBoundsException<\/p>\n<p>Erzeugt ein neues Cursor-Objekt. Liegt der Hotspot au\u00dferhalb der Grenzen der Grafik, wird eine IndexOutOfBoundsException ausgel\u00f6st. <\/li>\n<li><b>Dimension getBestCursorSize( int preferredWidth, int preferredHeight )<br \/>\n      <br \/><\/b>Liefert die unterst\u00fctzte Cursor-Gr\u00f6\u00dfe, die den gew\u00fcnschten Ausma\u00dfen am n\u00e4chsten liegt. Oft werden die Argumente ignoriert, wenn die Umgebung keine beliebige Cursor-Gr\u00f6\u00dfe zul\u00e4sst. Erlaubt das System \u00fcberhaupt keine selbst definierten Cursor, erhalten wir ein Objekt der Dimension (0,0). <\/li>\n<li><b>int getMaximumCursorColors()<br \/>\n      <br \/><\/b>Liefert das Maximum an Farben, das das Toolkit f\u00fcr Cursor unterst\u00fctzt. Der R\u00fcckgabewert ist null, wenn selbst definierte Cursor nicht gestattet sind.<\/li>\n<\/ul>\n<p><b>public abstract class java.awt.Component implements ImageObserver, MenuContainer, Serializable<\/b><\/p>\n<ul>\n<li><b>void setCursor( Cursor cursor )<br \/>\n      <br \/><\/b>Weise einen neuen Cursor zu.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Bei einem Cursor sind wir nicht allein auf die vordefinierten Muster angewiesen. Leicht l\u00e4sst sich aus einer Grafik ein eigener Cursor definieren. Dazu bietet das Toolkit die Methode createCustomCursor() an. Als Argument geben wir ein Image-Objekt, einen Hotspot und einen Namen an. Der Hotspot definiert eine Art Nullpunkt, der die Spitze angibt. Zeigt etwa der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-2360","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=2360"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2360\/revisions"}],"predecessor-version":[{"id":2361,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2360\/revisions\/2361"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=2360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=2360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=2360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}