2017-09-13 2 views
0

Ich versuche, eine Textzeile zu erstellen, die aus einem Namen und einer Textzeichenfolge besteht. Ich möchte, dass der Name ein Hyperlink ist und der Rest nur einfacher Text ist.Abstand zwischen Elementen in TextFlow in JavaFX deaktivieren

Ich dachte, TextFlow wäre dafür gut, aber das Problem ist, dass es automatisch ein Leerzeichen zwischen den Hyperlink und den Text setzt. Was passiert, wenn ich möchte, dass die Textflow zum Beispiel sein

Jane 's genial

flow wird, dass ein

Jane' s genial

Gibt es eine Methode oder eine CSS-Eigenschaft, um dieses Verhalten zu deaktivieren?

Antwort

2

Lösung

Sie die Polsterung über einen CSS-Stil entfernen:

.hyperlink { 
    -fx-padding: 0; 
} 

Oder man kann es in Code tun, wenn Sie wollen:

link.setPadding(new Insets(0)); 

Hintergrund

Die Standardeinstellung kann in der modena.css Datei in der jfxrt.jar Datei verpackt mit Ihrer JRE Verteilung gefunden werden und es ist:

-fx-padding: 0.166667em 0.25em 0.166667em 0.25em; /* 2 3 2 3 */ 

Beispielanwendung

sample application

In dem Beispiel-Screenshot die zweite Hyperlink hat Fokus (daher seine gestrichelte Grenze).

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.control.Hyperlink; 
import javafx.scene.layout.Pane; 
import javafx.scene.text.Text; 
import javafx.scene.text.TextFlow; 
import javafx.stage.Stage; 

public class HyperSpace extends Application { 

    @Override 
    public void start(Stage stage) { 
     TextFlow textFlow = new TextFlow(
      unstyle(new Hyperlink("Jane")), 
      new Text("'s awesome "), 
      unstyle(new Hyperlink("links")) 
     ); 
     stage.setScene(new Scene(new Pane(textFlow))); 
     stage.show(); 
    } 

    private Hyperlink unstyle(Hyperlink link) { 
     link.setPadding(new Insets(0)); 
     return link; 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
Verwandte Themen