Swing Eigenen Cursor setzen

beastofchaos

Bekanntes Mitglied
Hi Leute,
Ich versuche gerade einen eigenen Cursor zu setzen. Im Package liegt das Bild "cursor.gif". Das Problem: Wenn ich nun im Programm über das Panel gehe, verschwindet der Cursor. Sprich offensichtlich lädt er das Bild nicht richtig... :(

Java:
        Toolkit toolkit = Toolkit.getDefaultToolkit();  
        Image image  = toolkit.getImage("cursor.gif");
        Point hotSpot = new Point(5, 5);
        Cursor c = toolkit.createCustomCursor(image, hotSpot, "Changer");
        
        setCursor(c);

Ich hab schon versucht, das Bild über ein ImageIcon zu laden, was auch nichts bringt. Bringt es vll. was, das Bild über "SwingUtilities.invokeLater" zu laden?

Gruß, Thomas
 

damtre

Aktives Mitglied
Also bei mir läuft dein Code...
Vielleicht hast du das Bild nur noch nicht an der richtigen Stelle?
Du hast ja einen relativen Pfad angegeben, das ist auch schon mal gut so. Aber vielleicht befindet sich dein Bild an sich nicht im Projektverzeichnis?

Ach ja. Wenn du willst, dass dieser Cursor immer dann sichtbar wird, wenn du über ein bestimmtes Panel fährst, dann solltest du einen MouseListener verwenden und davon die MouseEntered Methode überschreiben...
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Vermutlich wird das Bild garnicht gefunden. Zum Laden von Bildern sollte man heutzutage
Code:
ImageIO.read(File file)
oder
Code:
new ImageIcon(getResource(String path)).getImage()
verwenden.
Ich würde den Cursor wie folgt erstellen:
Java:
Cursor c = toolkit.createCustomCursor(new ImageIcon(getResource("cursor.gig").getImage(), new Point(5, 5), "Changer");
Falls das Bild nicht gefunden wird, wird eine NullPointerException geworfen.
Ach ja. Wenn du willst, dass dieser Cursor immer dann sichtbar wird, wenn du über ein bestimmtes Panel fährst, dann solltest du einen MouseListener verwenden und davon die MouseEntered Methode überschreiben...
Dafür reicht - wie oben aufgeführt - einfach ein Aufruf von setCursor(Cursor cursor) an der jeweiligen Komponente.
 

beastofchaos

Bekanntes Mitglied
Code:
Cursor c = toolkit.createCustomCursor(new ImageIcon(getResource("cursor.gif")).getImage(), new Point(5, 5), "Changer");

Also so hatte ich es am Anfang auch (bei dir steht noch ein getRessource(?)):
Code:
Cursor c = Toolkit.getDefaultToolkit().createCustomCursor(new ImageIcon("cursor.gif").getImage(), new Point(5, 5), "Changer");

Ich versuchs jetzt noch einmal mit diesem Code ;)

...

Funktioniert immer noch - hiermal, in welchem Kontext es aufgerufen wird:

Java:
public class CPreview extends JPanel{
    ...
    public CPreview(Color cA, Color cB){
        colorA = cA;

        colorB = cB;
        
        setOpaque(false);
        
        Cursor c = Toolkit.getDefaultToolkit().createCustomCursor(new ImageIcon("cursor.gif").getImage(), new Point(5, 5), "Changer");
        
        setCursor(c);                                                           // funktioniert nicht
    }
    ...

Die Klasse stellt eine Vorschau von zwei Farben in meinem Malprogramm dar. Soll ich euch mal die jar von dem Program mgeben, damit ihr das Problem seht? :p Der Cursor wird einfach "unsichtbar" bzw. ein leeres Image wird angezeigt.

...

So habs jetzt mit ImageIO versucht:
Java:
Cursor c = new Cursor(Cursor.DEFAULT_CURSOR);
        try {
            Image image = ImageIO.read(new File("cursor.gif"));
            c = Toolkit.getDefaultToolkit().createCustomCursor(image, new Point(5, 5), "Changer");
        } catch (IOException ex) {
            // sonst: c = Toolkit.getDefaultToolkit().createCustomCursor(new ImageIcon("cursor.gif").getImage(), new Point(5, 5), "Changer");
        }
        
        setCursor(c);

Der Cursor ist jetzt ganz normal (Default_Cursor), weil eine IOException geworfen wird. Wieso findet er das Bild nicht?
Im Anhang ein Bild, wie es in der "Projects"-Ansicht (von NetBeans) aussieht.


Gruß und Dankeschön für bisherige Hilfe, Thomas
 

Anhänge

  • cursorProblem.png
    cursorProblem.png
    10,9 KB · Aufrufe: 41

Michael...

Top Contributor
(bei dir steht noch ein getRessource(?))
Das hatte einen Grund.

Versuch mal:
Java:
Cursor c = toolkit.createCustomCursor(new ImageIcon(getResource("/colors/cursor.gif").getImage(), new Point(5, 5), "Changer");
oder:
Java:
Cursor c = toolkit.createCustomCursor(new ImageIcon(getResource("colors/cursor.gif").getImage(), new Point(5, 5), "Changer");
 

damtre

Aktives Mitglied
Genau das sagte ich ja vorhin! ;)
Dein Pfad stimmt nicht. Dein Bild steckt ja im Ordner colors.

Dafür reicht - wie oben aufgeführt - einfach ein Aufruf von setCursor(Cursor cursor) an der jeweiligen Komponente.

Stimmt... Hatte irgendwie in Erinnerung, dass man dafür nen Listener verwendet... ;)
 
Zuletzt bearbeitet:

beastofchaos

Bekanntes Mitglied
also funktioniert jetzt einwandfrei - Dankeschön ;)

Muss leider doch einen MouseListener benutzen, fällt mir gerade auf:
Denn das Panel enthält zwei halb über einander liegende Labels und nur bei einem soll der Cursor sein, aber weiterhin kein Problem - Thema ist fertig :p
 

beastofchaos

Bekanntes Mitglied
Ist mir schon klar, aber das eine Label liegt über dem anderen. Das hintere soll diesen Cursor haben. Problem: Sobald ich auf das hintere aber klicke, schiebt sich das in den Hintergrund und genau deswegen, hab ich die beiden Labels entfernt, jeweils ersetzt mit Color und lasse immer nur Rectangles malen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S AWT Eigenen Cursor im Frame verwenden... AWT, Swing, JavaFX & SWT 5
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
maximizer JavaFX Accordion mit eigenen TitledPanes füllen AWT, Swing, JavaFX & SWT 0
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
J Drag and Drop von eigenen Objekten AWT, Swing, JavaFX & SWT 3
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
G LookAndFeel Tutorial für Erstellung eines eigenen Look And Feel AWT, Swing, JavaFX & SWT 3
S Swing Eigenen Button schreiben AWT, Swing, JavaFX & SWT 6
B Eigenen Look&Feel erstellen?! AWT, Swing, JavaFX & SWT 2
S Swing Eigenen JDialog mit Rückgabewert AWT, Swing, JavaFX & SWT 3
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
Z andere Programmfenster relativ zum eigenen maximieren AWT, Swing, JavaFX & SWT 4
J Eigenen Parser schreiben AWT, Swing, JavaFX & SWT 8
N Swing eigenen Dialog erstellen AWT, Swing, JavaFX & SWT 8
jueki eigenen Button in JFileChooser einfügen AWT, Swing, JavaFX & SWT 7
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
E Eigenen RowSorter AWT, Swing, JavaFX & SWT 11
P Swing eigenen Modalen JDialog AWT, Swing, JavaFX & SWT 6
data89 Swing Eigenen Fensterrahmen und (Fenster-)Erweiterungen erstellen AWT, Swing, JavaFX & SWT 7
S Swing editable JCombobox mit eigenen Einträgen manangen AWT, Swing, JavaFX & SWT 5
F Drag & Drop mit eigenen Komponenten AWT, Swing, JavaFX & SWT 2
GilbertGrape ActionListener implementieren oder Eigenen für jede Komponente? AWT, Swing, JavaFX & SWT 9
G Hilfe beim Erstellen eines eigenen Html-Editors! AWT, Swing, JavaFX & SWT 4
C JScrollpane eigenen jScrollBar einfügen AWT, Swing, JavaFX & SWT 2
D Darstellungsproblem des eigenen TreeModel bei Veränderungen AWT, Swing, JavaFX & SWT 7
G eigenen Observer schreiben AWT, Swing, JavaFX & SWT 6
J Drag & Drop : JLabel -> JLabel (eigenen Datentyp über AWT, Swing, JavaFX & SWT 2
S JTree mit eigenen Objekten füllen AWT, Swing, JavaFX & SWT 4
isowiz Einige Fragen zur ersten eigenen Sing-Applikation AWT, Swing, JavaFX & SWT 4
M Symbole beim eigenen Renderer AWT, Swing, JavaFX & SWT 7
F Eigenen JDialog öffnen? AWT, Swing, JavaFX & SWT 4
J JFrame mit eigenen Button minimieren AWT, Swing, JavaFX & SWT 2
N Methode für Bild laden geht nur in der eigenen Klasse... AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
E verschiedene Cursor setzen AWT, Swing, JavaFX & SWT 1
E JavaFX Cursor-Position im ScrollPane AWT, Swing, JavaFX & SWT 0
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
domjos1994 JavaFX Element auswählen auf dem der Cursor ist AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX Default-Cursor läßt sich nicht immer "aktivieren" AWT, Swing, JavaFX & SWT 3
N Cursor im JTextField AWT, Swing, JavaFX & SWT 6
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
B setCursor() lässt Cursor ganz verschwinden AWT, Swing, JavaFX & SWT 9
Madlip SWT Probleme mit SWT.CURSOR AWT, Swing, JavaFX & SWT 2
B Swing Cursor-Transparenz AWT, Swing, JavaFX & SWT 2
A Swing GlassPane Cursor wird bei fremder Komponente nicht angezeigt AWT, Swing, JavaFX & SWT 3
B Cursor Farbe ändern AWT, Swing, JavaFX & SWT 6
J Cursor blinken ausschalten AWT, Swing, JavaFX & SWT 4
J Swing Cursor von Child falsch, wenn Parant disabled AWT, Swing, JavaFX & SWT 2
Zettelkasten Cursor nicht anzeigen lassen AWT, Swing, JavaFX & SWT 2
C Cursor AWT, Swing, JavaFX & SWT 5
T Swing JTable - true zurückbekommen, wenn der Cursor in einer Zelle blinkt AWT, Swing, JavaFX & SWT 7
K mehrere JTextFields - wie finde ich die Cursor-Position? AWT, Swing, JavaFX & SWT 5
M Swing [JTextPane] Cursor lässt sich nicht mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 3
T Cursor im JPanel fangen AWT, Swing, JavaFX & SWT 2
D cursor bild und mouslistner AWT, Swing, JavaFX & SWT 9
M Cursor setzen im JTextPane AWT, Swing, JavaFX & SWT 3
hdi Custom Cursor: Problem mit Größe AWT, Swing, JavaFX & SWT 5
D JTextField behält meinen cursor nicht AWT, Swing, JavaFX & SWT 3
G Cursor Bewegung tracken AWT, Swing, JavaFX & SWT 2
H Flexibler Cursor AWT, Swing, JavaFX & SWT 8
G Komponente in der der Cursor steht zurückgeben? AWT, Swing, JavaFX & SWT 2
D Bild Cursor AWT, Swing, JavaFX & SWT 5
D JTextAray und Cursor AWT, Swing, JavaFX & SWT 11
T Problem mit dem Cursor AWT, Swing, JavaFX & SWT 7
R Den Cursor setzen AWT, Swing, JavaFX & SWT 5
M Problem mit Cursor für Panels AWT, Swing, JavaFX & SWT 4
M Cursor wird nach JFileChosser nicht gesetzt AWT, Swing, JavaFX & SWT 3
B Spezieller Cursor in Swing AWT, Swing, JavaFX & SWT 7
T Markierten Mausbereich erfassen, Text beim Cursor platzieren AWT, Swing, JavaFX & SWT 6
V Cursor zu Groß AWT, Swing, JavaFX & SWT 4
T Cursor setzen AWT, Swing, JavaFX & SWT 3
L wie den Cursor von einem TextFeld zum anderen setzen? AWT, Swing, JavaFX & SWT 3
B Cursor zentriert in ein Textfeld positionieren AWT, Swing, JavaFX & SWT 2
E Cursor in JTextPane versetzen? AWT, Swing, JavaFX & SWT 19
D Farbe einer Grafik über den Cursor abfragen AWT, Swing, JavaFX & SWT 6
M Cursor im deaktivierten JInternalFrame AWT, Swing, JavaFX & SWT 2
A Cursor Icon bei DnD aus nativen Anwendungen AWT, Swing, JavaFX & SWT 2
S Cursor über JButton ändern AWT, Swing, JavaFX & SWT 4
V JTextField Focus Cursor setzen AWT, Swing, JavaFX & SWT 2
U Cursor beim Drag and Drop AWT, Swing, JavaFX & SWT 8
T JTextArea, in welcher Zeile befindet sich der Cursor AWT, Swing, JavaFX & SWT 25
clemson Cursor in JTable-Cell setzen AWT, Swing, JavaFX & SWT 6
P [TextField] cursor setzten AWT, Swing, JavaFX & SWT 2
Luma Keinen Cursor in JDialog? AWT, Swing, JavaFX & SWT 9
G Focus so setzen, daß in einer jTextArea der Cursor blinkt AWT, Swing, JavaFX & SWT 7
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 0
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
S TableCellRender - Zelle auf editier-/anklickbar setzen AWT, Swing, JavaFX & SWT 5
berserkerdq2 Anchorpane warum kann ich nicht Anchors setzen AWT, Swing, JavaFX & SWT 6
_user_q ThreadPool schedule Wert auf false setzen AWT, Swing, JavaFX & SWT 1
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
izoards *.doc Seitenränder per Java setzen... AWT, Swing, JavaFX & SWT 14
G Button Strings Effektiver setzen AWT, Swing, JavaFX & SWT 3
W Bounds setzen AWT, Swing, JavaFX & SWT 1
CptK Fokus auf geöffnetes Zweit-Fenster setzen und Eingaben außerhalb blocken AWT, Swing, JavaFX & SWT 2
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
L JavaFX TableColumns mit CellFactory setzen AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben