当前位置: 首页 > 知识库问答 >
问题:

JavaFX中可复制的label/textfield/labeledtext

湛嘉歆
2023-03-14

我只想在JavaFX中创建可复制的标签。我试图创建没有背景,没有焦点边框和默认背景色的文本字段,但我没有成功。我发现了很多如何从控件中移除焦点背景的问题,但所有这些看起来都像是“黑客”。

有没有实现可复制文本的标准解决方案?

共有1个答案

隆兴修
2023-03-14

您可以使用CSS创建一个没有边框和背景色的文本字段:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class CopyableLabel extends Application {

    @Override
    public void start(Stage primaryStage) {
        TextField copyable = new TextField("Copy this");
        copyable.setEditable(false);
        copyable.getStyleClass().add("copyable-label");

        TextField tf2 = new TextField();
        VBox root = new VBox();
        root.getChildren().addAll(copyable, tf2);
        Scene scene = new Scene(root, 250, 150);
        scene.getStylesheets().add(getClass().getResource("copyable-text.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

copyable-text.css:

.copyable-label, .copyable-label:focused {
    -fx-background-color: transparent ;
    -fx-background-insets: 0px ;
}
 类似资料:
  • 这似乎是一种非常“愚蠢”的方式...有人知道更好的方法吗?也许java有一些内置的方法?

  • 问题内容: 我想控制Javafx TextField中的输入,以便只允许数字输入,这样,如果超出了最大字符数,则不会对文本框进行任何更改。 编辑:根据评论中的建议,我使用了JavaFX项目负责人建议的方法。阻止输入字母非常有用。我只需要它也可以过滤特殊字符。我尝试将过滤器更改为(text.matchs(“ [0-9]”),但不允许输入退格键。 edit2:找出一个特殊字符和长度的过滤器。这是我的最

  • 问题内容: 我正在使用JavaFX 2.2项目,使用TextField控件时遇到问题。我想限制用户将输入到每个TextField的字符,但是我找不到属性或类似maxlength的东西。存在同样的问题,可以通过这种方式解决。如何解决JavaFX 2.2的问题? 问题答案: 这是在通用文本字段上完成工作的更好方法: 除了该“撤消”错误外,它的工作原理非常完美。

  • 我有1个“viewelements”-类,1个控制器和1个fxml-文件。 ViewElements-Class包含FXML的元素,如按钮和文本字段。Controller-Class包含业务逻辑。 我试图更新文本字段“TextFieldDateIausWaeHlen”,我想将文件的路径设置到文本字段中,但我的方法不起作用。 我的错误在哪里?

  • 我在javafx中有一个TextField是在FXML中创建的。它链接到一个名为“thesholdbox”的变量(如下所示,实例化不显示)。我有一个监听KeyEvents的字段,但是每当我在字段中输入值时,“gettext()”总是返回一个空字符串。 Java代码: FXML: