JavaFX: как сделать кликабельный текст
Я ищу простой способ сделать это. Я не могу найти его нигде, и я уже пробовал API.
поэтому у меня есть предложение:
нет учетной записи? Нажмите здесь
Я хочу сделать слово "здесь" синим и кликабельным-в кнопку. Как этого достичь? Я просто делаю невидимую кнопку позади позиции текста?
1 ответов
решение
использовать textflow в (Java 8):
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")
);
пример
вот полный, исполняемый пример (Java 8):
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, чтобы получить что-то более приятное и похожее на ссылки в интернете; т. е. просто другой цветной текст для указания посещенных и не посещенных ссылок).
в сторону
для вас конкретное сообщение, вы должны просто сделать текст" нет учетной записи "гиперссылкой и избавиться от текста" нажмите здесь" (как рекомендовано органом веб-стандартов w3c).
по теме