Java FX Mouse over

mugsawaay

Aktives Mitglied
Hallo,

suche eine Doku oder Beispiel zu folgender Problematik.
Auf einem Gruppenphoto soll, fährt man mit der Maus über die Köpfe, oder bestimmte Stellen eines Bildes der entsprechende name angezeigt werden.

Vielen Dank
 

dzim

Top Contributor
Also Grundsätzlich gibt es da sicher mehrere Wege die ans Ziel führen. Ich kann dir keinen Fix und fertigen Code präsentieren, aber ein paar Lösungsvorschläge machen:

Variante 1:
Zeichne dein Bild auf ein Canvas und an den stellen der Köpfe (unsichtbare) Nodes (Kreise, Rechtecke, ...).
Beispiel: http://stackoverflow.com/questions/27999430/javafx-clickable-line-on-canvas
Problem: Canvas verändert per Default nicht die Grösse. Es gab hier vor kurzem eine Frage dazu, die sich auf diesen Lösungsvorchlag hier berief: https://dlemmermann.wordpress.com/2014/04/10/javafx-tip-1-resizable-canvas/

Variante 2:
StackPane, ImageView mit dem Bild in voller Grösse drüber und weitere (unsichtbare) Nodes (Circle, ...). Dort dann gewöhnlich Tooltips drüber.
Vorteil: Kann resizen.

Grundsätzlich aber gilt: Wenn du die Grösse veränderst, musst du dich darum kümmern, das die Markierungen auch weiterhin an den richtigen Stellen im Bild bleiben - Fixe Grössen, sind da sicher hilfreich.

Wenn du noch Fragen hast: Bei der zweiten Variante könnte ich (wenn ich mal Lust habe) eventuell auch mal mit Code zu Seite stehen.
 

dzim

Top Contributor
Ok. Kleines FXML-Beispiel.
Habe das "hübsche" Bild von hier verwendet, und mal damit herumgespielt:
https://de.wikipedia.org/wiki/Datei:Gruppenbild_Atelier_Elvira_(um_1894).JPG (1025x713px)

HTML:
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.paint.Color?>
<?import javafx.scene.shape.Circle?>

<BorderPane xmlns:fx="http://javafx.com/fxml">

    <center>
        <StackPane>
            <ImageView fx:id="img" preserveRatio="true">
                <image>
                    <Image url="@1024px-Gruppenbild_Atelier_Elvira_(um_1894).JPG"/> 
                </image>
            </ImageView>
            <Circle fx:id="women1" radius="75" translateX="-400" translateY="-190"> 
                <fill><Color fx:constant="WHITE" /></fill>
            </Circle>
            <Circle fx:id="women2" radius="75" translateX="-200" translateY="-190"> 
                <fill><Color fx:constant="WHITE" /></fill>
            </Circle>
            <Circle fx:id="women3" radius="70" translateX="50" translateY="-220">
                <fill><Color fx:constant="WHITE" /></fill>
            </Circle>
            <Circle fx:id="women4" radius="65" translateX="180" translateY="-180">
                <fill><Color fx:constant="WHITE" /></fill>
            </Circle>
            <Circle fx:id="women5" radius="70" translateX="360" translateY="-200">
                <fill><Color fx:constant="WHITE" /></fill>
            </Circle>
        </StackPane>
    </center>
</BorderPane>

Die Kreise sollten natürlich eher Transparent sein. Eventuell mit weissem Rand, oder so.
Und man müsste ein MouseMove/-Enter/-Exit-Listener anhängen. Circle scheint normalerweise keine Tooltips zu unterstützen, daher könnte man sich dort ein weiteres Overlay vorstellen.

Oder aber: http://stackoverflow.com/questions/25338873/is-there-a-simple-way-to-display-hint-texts-in-javafx

Problem damit noch: Nicht skallierbar. Um das zu erreichen musst du die translateX/-Y an die grösse des sie umgebenen StackPanes hängen und richtig berechnen. Bei fixer Grösse aber ist das natürlich egal. Denn dann kannst du beim Festlegen der Kreis-Positionen im Code auch die Position im Node abfragen (glaub ich).

Savvy?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G mouse events AWT, Swing, JavaFX & SWT 6
N Mouse methods AWT, Swing, JavaFX & SWT 10
G Mouse Event in anderemm Event auslösen AWT, Swing, JavaFX & SWT 50
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
B GUI mit Mouse Touch AWT, Swing, JavaFX & SWT 27
S Mouse Events in einer sortierten JTable unterscheiden AWT, Swing, JavaFX & SWT 18
A Mouse event und exit on close AWT, Swing, JavaFX & SWT 11
H Rechteck via Mouse bewegen AWT, Swing, JavaFX & SWT 2
H Java Robot mouse funktioniert nur auf Notebook nicht. AWT, Swing, JavaFX & SWT 4
E JFace ListSelectionDialog & Mouse-Events? AWT, Swing, JavaFX & SWT 2
lumo SWT Composite Mouse Track Lisetner AWT, Swing, JavaFX & SWT 2
K JButton nur dann aktivieren, wenn die Mouse 3 Sek. über dem Button bleibt AWT, Swing, JavaFX & SWT 2
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
R JTable - eigener Editor - Mouse events AWT, Swing, JavaFX & SWT 2
H fwststellen, ob sich Mouse auf dem Rand befindet AWT, Swing, JavaFX & SWT 3
Dit_ Buttons Mouse-Over Effekt AWT, Swing, JavaFX & SWT 8
R Key und Mouse Events AWT, Swing, JavaFX & SWT 2
Iron Monkey JTable 2 Selektionsfarben Mouse-Event AWT, Swing, JavaFX & SWT 8
D Mouse Koordinaten AWT, Swing, JavaFX & SWT 2
P Mouse Listener beenden AWT, Swing, JavaFX & SWT 14
raptorrs JFrame nur anzeigen, solange die Mouse gedrückt ist AWT, Swing, JavaFX & SWT 3
G JButton Mouse Over Text AWT, Swing, JavaFX & SWT 2
T Mouse Popup AWT, Swing, JavaFX & SWT 2
M Bug; Swing-Worker, Progressbar und Mouse AWT, Swing, JavaFX & SWT 22
R Mouse Wheel funktioniert nicht im JDialog ! AWT, Swing, JavaFX & SWT 4
T mouse-event auf jcolorchooser AWT, Swing, JavaFX & SWT 2
M eine zeichnen beim mouse ziehen AWT, Swing, JavaFX & SWT 8
K Mouse Events der Scrollbar/pane AWT, Swing, JavaFX & SWT 2
V JPopupMenu Problem und Tipp zu mouse/key AWT, Swing, JavaFX & SWT 3
S Rechteck per Mouse aufziehen AWT, Swing, JavaFX & SWT 7
S Mouse-Event in JTable AWT, Swing, JavaFX & SWT 3
K Mouse Position nach Drag und Drop? AWT, Swing, JavaFX & SWT 4
M Grafikobjekte mit Mouse auswählen und verschieben AWT, Swing, JavaFX & SWT 2
D JLabel aus einem Mouse- bzw. KeyListener aendern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben