2017-04-14 31 views
0

這可能嗎?我可以創建兩個具有不同字體樣式的超鏈接,但是如果將鼠標懸停在一個不會強調兩行文本的位置上,則看起來有點奇怪。JavaFX - 同一個超鏈接中的多種字體大小

我想要一個帶有較小「標題」文本的超鏈接,點擊文本的任何部分都應該做同樣的事情。

+0

帶有兩個超鏈接的VBox。 – Sedrick

回答

1

這是你在找什麼?

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Hyperlink; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

/** 
* 
* @author blj0011 
*/ 
public class JavaFXApplication77 extends Application 
{ 

    @Override 
    public void start(Stage primaryStage) 
    { 
     Hyperlink link = new Hyperlink(); 
     link.setText("http://example.com"); 
     link.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent e) { 
       System.out.println("This link is clicked"); 
      } 
     }); 

     Hyperlink link2 = new Hyperlink(); 
     link2.setText("http://example.com"); 
     link2.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent e) { 
       System.out.println("This link is clicked"); 
      } 
     }); 
     link.setOnMouseEntered((event) -> { 
      link2.underlineProperty().setValue(Boolean.TRUE); 
     }); 

     link.setOnMouseExited((event) -> { 
      link2.underlineProperty().setValue(Boolean.FALSE); 
     }); 


     VBox vbox = new VBox(); 
     vbox.getChildren().addAll(link, link2); 
     StackPane root = new StackPane(); 
     root.getChildren().add(vbox); 

     Scene scene = new Scene(root, 300, 250); 

     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     launch(args); 
    } 

} 

這是一種方法。您可能可以將屬性雙向綁定。

+1

希望能在同一個超鏈接中完成它(這可能是不可能的,除非它支持某種類型的「標記」),但這對於理想的行爲可能是一個充分的解決方法。 – User

相關問題