JavaFX Hover Effekt über das Parent Element

lam_tr

Top Contributor
Hallo zusammen,

ich habe ein AnchorPane und als Kinder drunter habe ich einen TextArea, HBox und ein Label. Die drei Elemente verdecken so gut wie fast das AnchorPane. Wie kann ich das so implementieren, dass sobald das AnchorPane mit dem Mauszeiger erreicht wird, dass zum Beispiel der Hintergrund sich ändert. Weil schlussendlich hover ich nicht über das AnchorPane, sondern über die Kinder. Aber tatsächlich will ich, sobald die Fläche erreicht wird soll Hintergrund gefärbt werden.

Wie würde man in dem Fall vorgehen?

Viele Grüße
lam
 

knilch

Bekanntes Mitglied
Hi,
Du kannst das erreichen, indem du z.B. dem anchorPane einen envent-handler für MouseEnter und MouseExit erstellst.
Hier mal ein Bespiel:
Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        AnchorPane anchorPane = new AnchorPane();
        TextArea textArea = new TextArea();
        textArea.setPrefWidth(200);
        textArea.setPrefHeight(50);
        textArea.setLayoutX(10);
        textArea.setLayoutY(10);

        HBox hBox = new HBox();
        hBox.setLayoutX(10);
        hBox.setLayoutY(120);

        Label label = new Label("Ich bin ein label");
        hBox.getChildren().add(label);

        anchorPane.getChildren().add(textArea);
        anchorPane.getChildren().add(hBox);

        textArea.setOnMouseEntered((event) -> {
            anchorPane.setStyle("-fx-background: #FFFFFF;");
            textArea.requestFocus(); // damit ein Text eingegeben werden kann
        });
        textArea.setOnMouseExited((event) -> {
            anchorPane.setStyle("-fx-background: #FFFF00;");
            anchorPane.requestFocus(); // damit eine Texteingabe nicht in der TextArea gemacht wird.
        });

        label.setOnMouseEntered((event) -> {
            anchorPane.setStyle("-fx-background: #FFFFFF;");
        });
        label.setOnMouseExited((event) -> {
            anchorPane.setStyle("-fx-background: #FFFF00;");
        });

        anchorPane.setOnMouseEntered((event) -> {
            anchorPane.setStyle("-fx-background: #FFFF00;");
        });
        anchorPane.setOnMouseExited((event) -> {
            anchorPane.setStyle("-fx-background: #FFFFFF;");
        });
        anchorPane.setOnMousePressed((event) -> {
            anchorPane.setStyle("-fx-background: #00FFFF;");
        });

        Scene scene = new Scene(anchorPane,400,400);
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }
}
 
Zuletzt bearbeitet:

dzim

Top Contributor
@knilch - gute programatische Lösung.
Alternativ kannst du es auch über CSS erreichen. Ich habe bei mir einen ähnlichen Ansatz benötigt (hover-Effekt auf einem Layout) und habe eine custom-Style-Class erstellt
Code:
/* default color + hover color */
.navigation {
    -fx-background-color: -neutral-light-gray-1;
}
.navigation:hover {
    -fx-background-color: -neutral-dark-gray-2;
}

/* pseudo classes used in code */
.navigation:selected {
    -fx-background-color: -brand-secondary;
}
.navigation:selected-light {
    -fx-background-color: -brand-tertiary;
}

/* and if I want no hover-effect but need the background color */
.navigation-no-hover {
    -fx-background-color: -neutral-light-gray-1;
}
Die Farben -neutral-light-gray-1, -neutral-light-gray-1, -brand-secondary und -brand-tertiary werden bei mir im
.root { /*... */ }-Bereich des CSS festgelegt.
 

lam_tr

Top Contributor
Hallo dzim,

wie kann ich von vorne rein Konstanten, hier: Farben, in Css definiere?
Kann ich auch eine CSS erben?

Grüße
Dim
 

dzim

Top Contributor
Nein, CSS erben geht, soweit ich weiss, leider nicht.
Ansonsten aber:
Code:
.root {
    -my-fancy-color-name: #FFFF0000; /* web-color with full opacity */
    -my-fancy-color-name-2: red; /* pre-defined named color */
    -my-fancy-color-name: #FF0000; /* default web-color */
}

#edit:
Praktischerweise kann man darin auch die Basis-Farbe der gesamten Anwendung festlegen (was ich gerne mache, und dann davon ausgehen anpasse, was ich benötige):
Code:
.root {
    /* color definitions or whatever */
    -my-base-color: silver;
    -fx-base: -my-base-color;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JavaFX Hover-Effekt bei Button AWT, Swing, JavaFX & SWT 11
I JavaFX: "Hover" und "Transition"-Effekt onEntered/onExited AWT, Swing, JavaFX & SWT 0
L JavaFX Custom control mit Hover Effekt AWT, Swing, JavaFX & SWT 2
dereki2000 Welcher Methodenaufruf bei Hover, click,... AWT, Swing, JavaFX & SWT 5
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
A Swing ImageIcon hover AWT, Swing, JavaFX & SWT 9
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
G JList hover möglich? AWT, Swing, JavaFX & SWT 2
J Teiltransparenter JFrame mit Blur-Effekt AWT, Swing, JavaFX & SWT 2
G JavaFX Button gedrückt "Effekt" AWT, Swing, JavaFX & SWT 2
E Problem mit Mouseover-Effekt AWT, Swing, JavaFX & SWT 2
A LookAndFeel Rollover Effekt bei JTabbedPane deaktivieren (Nimbus) AWT, Swing, JavaFX & SWT 8
E Swing Tutorial Buch blättern Effekt gesucht AWT, Swing, JavaFX & SWT 2
Dit_ Buttons Mouse-Over Effekt AWT, Swing, JavaFX & SWT 8
S Komischer Effekt bei Laf AWT, Swing, JavaFX & SWT 6
V Mouseover-Effekt bei JButton abschalten? AWT, Swing, JavaFX & SWT 2
K L a y o u t-Testprogramm mit seltsamen Effekt AWT, Swing, JavaFX & SWT 7
R Wie geht dieser Effekt? AWT, Swing, JavaFX & SWT 15
C 3D-Effekt bei Buttons AWT, Swing, JavaFX & SWT 3
foobar 3D-Effekt AWT, Swing, JavaFX & SWT 3
T Seltsamer Effekt bei repaint() AWT, Swing, JavaFX & SWT 4
R JTextField - setBackground - kein Effekt AWT, Swing, JavaFX & SWT 5
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
T Scene wechseln über ManuItem AWT, Swing, JavaFX & SWT 7
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
A Layoutwechsel über RadioButtons AWT, Swing, JavaFX & SWT 3
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
J Spielfelder auch über die Tastatureingabe (1…9) ansteuern (Tic Tac Toe) AWT, Swing, JavaFX & SWT 2
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
F Verzeichnis über GUI erstellen AWT, Swing, JavaFX & SWT 2
T GUI über Tastatur bedienen AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
L JavaFX TreeView Edit Mode über F2 AWT, Swing, JavaFX & SWT 13
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
C JavaFX ScrollPane schießt über das Ziel hinaus... AWT, Swing, JavaFX & SWT 1
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
C JavaFX GUI - Entscheidung über Framework AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
Augenblau JavaFX Externe Schriftart über CSS ansprechen und zuweisen AWT, Swing, JavaFX & SWT 5
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
kaoZ Swing JFrame lässt sich nicht über dispose() abbauen AWT, Swing, JavaFX & SWT 0
P Vorteile von Tooltip nutzen (wird über allen anderen Objekten angezeigt) AWT, Swing, JavaFX & SWT 3
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
B Swing Borderlayout East über North AWT, Swing, JavaFX & SWT 5
D Swing Letzte Zeile einer JTable nicht über RowSorter sotieren AWT, Swing, JavaFX & SWT 2
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
A Bild über Imageviewer auf GUI anzeigen AWT, Swing, JavaFX & SWT 3
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
P Öffnen, Speichern von Dat. über DialogBoxen AWT, Swing, JavaFX & SWT 10
R Bewglichen Rahmen über einem Bild AWT, Swing, JavaFX & SWT 3
P Listenelemente über Checkbox löschen AWT, Swing, JavaFX & SWT 6
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
S SWT Anzeigen einer lokalen HTML-Seite im Browser Widget über RAP nicht möglich AWT, Swing, JavaFX & SWT 3
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben