2014-01-07 16 views
7

私はこれを行う簡単な方法を探しています。私はそれをどこにでも見つけることができず、すでにAPIを試しています。JavaFX:クリック可能なテキストを作成する方法

アカウントをお持ちでない:

は、だから私は文を持っていますか?ここをクリック

「ここ」の単語を青色にしてクリック可能にして、ボタンにしたいと考えています。どのようにこれを達成することができる?私はちょうどテキストの位置の後ろに目に見えないボタンを作っていますか?

TextFlow flow = new TextFlow(
    new Text("Don't have an account? "), new Hyperlink("Click here") 
); 

使用FlowPane(Javaの7):

FlowPane flow = new FlowPane(); 
flow.getChildren().addAll(
    new Text("Don't have an account? "), new Hyperlink("Click here") 
); 

サンプル

答えて

22

ソリューション

TextFlowJava 8)を使用しますここは完全に、実行例(Javaの8)である:

clickme

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.*; 
import javafx.scene.control.*; 
import javafx.scene.text.*; 
import javafx.stage.Modality; 
import javafx.stage.*; 

public class TextLink extends Application { 

    @Override 
    public void start(final Stage primaryStage) throws Exception { 
     Stage  accountCreation = buildAccountCreationStage(primaryStage); 
     Hyperlink createAccount = buildCreateAccountLink(primaryStage, accountCreation); 

     TextFlow flow = new TextFlow(
      new Text("Don't have an account? "), createAccount 
     ); 
     flow.setPadding(new Insets(10)); 

     primaryStage.setScene(new Scene(new Group(flow))); 
     primaryStage.show(); 
    } 

    private Hyperlink buildCreateAccountLink(Stage primaryStage, Stage accountCreation) { 
     Hyperlink createAccount = new Hyperlink("Click here"); 

     createAccount.setOnAction(event -> { 
      accountCreation.setX(primaryStage.getX()); 
      accountCreation.setY(primaryStage.getY() + primaryStage.getHeight()); 
      accountCreation.show(); 
     }); 

     return createAccount; 
    } 

    private Stage buildAccountCreationStage(Stage primaryStage) { 
     Stage accountCreation = new Stage(StageStyle.UTILITY); 

     accountCreation.initModality(Modality.WINDOW_MODAL); 
     accountCreation.initOwner(primaryStage); 
     accountCreation.setTitle("Create Account"); 
     accountCreation.setScene(new Scene(new Label("<Account Creation Form Goes Here>"), 250, 50)); 

     return accountCreation; 
    } 

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

デフォルトリンクのハイライトは、一種の奇妙なその周りの破線の境界線である(必要であれば、あなたがするためにCSSでそれをスタイルすることができますWeb上のリンクにもっと良く似たものを入手してください。つまり、訪問済みおよび未訪問のリンクを示すために異なる色のテキストのみ)。

別に

あなたの特定のメッセージのために、あなただけの「アカウントをお持ちでない」のテキスト、ハイパーリンクにする必要があり、「ここをクリックして」テキスト(as recommended by the w3c web standards body)を取り除きます。

関連

+0

ありがとうございました! – Stevantti

関連する問題