JavaFX Custom control mit Hover Effekt

lam_tr

Top Contributor
Moin zusammen,

ich möchte das Textfeld von Jira zuzusagen nachbauen. Dabei geht es darum, dass sobald der Benutzer das Textfeld hovered erscheinen zum Beispiel "Edit" und "Commit" Button über oder unter das Textfeld.

Wie würde man sowas in Javafx machen?

Müsste ich da einen Container über das Textfield machen mit margin von 10px und sobald gehovered wird erscheint Pinsel-Button`?

Wie würdet ihr die Sache angehen?

Viele Grüße
lam
 

knilch

Bekanntes Mitglied
Hi,
Ich weiss nicht genau, wie das in Jira funktioniert, bzw. wie du das meinst, aber ich könnte mir so vorstellen, dass du das Textfield in einem Container (z.B. Pane) legst, dann soblad die Maus innerhalb des Containers liegt, werden die Buttons eingeblended, wenn die Maus wieder aus dem Container ist, werden die Buttons ausgeblendet.
Hier mal ein Beispiel, wie du das mit Fadein/Fadeout machen könntest:
Java:
import javafx.animation.FadeTransition;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.util.Duration;


public class Main extends Application {
    private Stage primaryStage;
   
    @Override
    public void start(Stage primaryStage) {
        this.primaryStage = primaryStage;
        initGui();
    }
   
    public static void main(String[] args) {
        launch(args);
    }

    private void initGui() {
        BorderPane root = new BorderPane();

        Pane topPane = new Pane();
        topPane.setPrefSize(260, 140);
       
        Pane bottomPane = new Pane();
        bottomPane.setPrefSize(260, 40);
       
        Label lbl = new Label("Name");
        lbl.setLayoutY(10);
        lbl.setLayoutX(10);
       
        TextField txtField = new TextField();
        txtField.setLayoutY(40);
        txtField.setLayoutX(10);
       

        Button btnSend = new Button("Send");
        btnSend.setLayoutY(70);
        btnSend.setLayoutX(10);
       
        Button btnEdit = new Button("Edit");
        btnEdit.setLayoutY(70);
        btnEdit.setLayoutX(120);
       
        Button btnExit = new Button("Exit");
        btnExit.setLayoutY(10);
        btnExit.setLayoutX(10);
       
        txtField.setPromptText("Name");
        txtField.textProperty().addListener(new ChangeListener<String>() {
            public void changed(ObservableValue<? extends String> observable, String oldVal, String newVal) {
                System.out.println(newVal);
            }
        });
       
       
        topPane.setOnMouseEntered(new EventHandler<MouseEvent>(){
            public void handle(MouseEvent mouseEvent){
                FadeTransition fadeTransition  = new FadeTransition(Duration.millis(500), btnSend);
                fadeTransition.setFromValue(0.0);
                fadeTransition.setToValue(1.0);
                fadeTransition.play();
                fadeTransition  = new FadeTransition(Duration.millis(500), btnEdit);
                fadeTransition.setFromValue(0.0);
                fadeTransition.setToValue(1.0);
                fadeTransition.play();
                txtField.requestFocus();
            }
        });
       
        topPane.setOnMouseExited(new EventHandler<MouseEvent>(){  
            public void handle(MouseEvent mouseEvent){
                FadeTransition fadeTransition  = new FadeTransition(Duration.millis(500), btnSend);
                fadeTransition.setFromValue(1.0);
                fadeTransition.setToValue(0.0);
                fadeTransition.play();
                fadeTransition  = new FadeTransition(Duration.millis(500), btnEdit);
                fadeTransition.setFromValue(1.0);
                fadeTransition.setToValue(0.0);
                fadeTransition.play();
                topPane.requestFocus();
               
            }
        });
       
        bottomPane.setOnMouseEntered(new EventHandler<MouseEvent>(){
            public void handle(MouseEvent mouseEvent){
                FadeTransition fadeTransition  = new FadeTransition(Duration.millis(500), btnExit);
                fadeTransition.setFromValue(0.0);
                fadeTransition.setToValue(1.0);
                fadeTransition.play();;
                btnExit.requestFocus();
            }
        });
       
        bottomPane.setOnMouseExited(new EventHandler<MouseEvent>(){
            public void handle(MouseEvent mouseEvent){
                FadeTransition fadeTransition  = new FadeTransition(Duration.millis(500), btnExit);
                fadeTransition.setFromValue(1.0);
                fadeTransition.setToValue(0.0);
                fadeTransition.play();
                bottomPane.requestFocus();
            }
        });
       
               
        topPane.getChildren().addAll(lbl, txtField, btnSend, btnEdit);

        bottomPane.getChildren().addAll(btnExit);
       
        btnExit.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                Platform.exit();               
            }
        });
       
        btnSend.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Send");               
            }
        });
       
        btnEdit.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Edit");               
            }
        });
               
        root.setTop(topPane);
        root.setBottom(bottomPane);
       
       
        Scene scene = new Scene(root, 260.0, 200.0);

        primaryStage.setTitle(this.getClass().toString());
        primaryStage.setScene(scene);
        primaryStage.show();   
    }

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
M JavaFX Parameter für Custom Control in FXML übergeben? AWT, Swing, JavaFX & SWT 4
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
F JavaFX Custom Exceptions AWT, Swing, JavaFX & SWT 5
D Gluon Scene Builder Custom AWT, Swing, JavaFX & SWT 0
B JavaFX Custom TextInputControl AWT, Swing, JavaFX & SWT 1
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
F JavaFX Custom ListView erstellt ghost Element AWT, Swing, JavaFX & SWT 3
X Custom Controls AWT, Swing, JavaFX & SWT 5
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
M Swing JColorchooser anpassen - custom style? AWT, Swing, JavaFX & SWT 0
B Custom JTabbedPane-Tab-Design AWT, Swing, JavaFX & SWT 2
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
G TitledPane Custom Title AWT, Swing, JavaFX & SWT 6
N Custom JButton Feld aus Parent lesen lassen AWT, Swing, JavaFX & SWT 11
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
B Swing JTable custom ColumnModel Problem AWT, Swing, JavaFX & SWT 5
W Swing Tag Oder Custom Eintrag AWT, Swing, JavaFX & SWT 7
algorismi Custom JDesktopIcon AWT, Swing, JavaFX & SWT 5
hdi Custom Cursor: Problem mit Größe AWT, Swing, JavaFX & SWT 5
N JComboBox mit Custom Object AWT, Swing, JavaFX & SWT 2
V Frage zu JScrollPane mit Custom Headern, mit Beispiel AWT, Swing, JavaFX & SWT 2
S [S] custom tree componente AWT, Swing, JavaFX & SWT 8
Z MessageDialog mit Custom panel erstellen AWT, Swing, JavaFX & SWT 2
L JavaFX Lösungsvorschläge für dieses coole Control AWT, Swing, JavaFX & SWT 8
B Java FX In control.TreeCell-Implementierung Binding erzeugen AWT, Swing, JavaFX & SWT 0
L JavaFX Control Pseudo Class AWT, Swing, JavaFX & SWT 1
D javafx.scene.control.TreeView als dropdown Menü AWT, Swing, JavaFX & SWT 6
D JavaFX Control zur Anzeige von eBooks AWT, Swing, JavaFX & SWT 5
S JavaFX Passendes "control" für ein Spielschein AWT, Swing, JavaFX & SWT 10
yvesdaeschle Outline Control gesucht AWT, Swing, JavaFX & SWT 5
yvesdaeschle List Control mit "card"-Ansicht AWT, Swing, JavaFX & SWT 7
A SWT Tooltip soll nicht verschwinden, solange User mit Maus auf Control ist AWT, Swing, JavaFX & SWT 5
G SWT Control.print(gc) funktioniert in Win, in Linux nicht AWT, Swing, JavaFX & SWT 4
L SWT Control.setVisible? AWT, Swing, JavaFX & SWT 2
T Swing Control und Events AWT, Swing, JavaFX & SWT 8
yvesdaeschle SWT OutlookBar Control AWT, Swing, JavaFX & SWT 3
lumo SWT Absolute position einer Composite/Control AWT, Swing, JavaFX & SWT 5
M SWT pack() von org.eclipse.swt.widgets.Control AWT, Swing, JavaFX & SWT 8
G Control für Tabreiter (TabbedPane) AWT, Swing, JavaFX & SWT 8
D Widget/Control während Laufzeit durch ein anderes ersetzen AWT, Swing, JavaFX & SWT 3
M Gain Control: Problem mit float ! AWT, Swing, JavaFX & SWT 2
I JavaFX Hover-Effekt bei Button AWT, Swing, JavaFX & SWT 11
dereki2000 Welcher Methodenaufruf bei Hover, click,... AWT, Swing, JavaFX & SWT 5
I JavaFX: "Hover" und "Transition"-Effekt onEntered/onExited AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
L JavaFX Hover Effekt über das Parent Element AWT, Swing, JavaFX & SWT 4
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

Ähnliche Java Themen

Neue Themen


Oben