使用 TextFlow 在 TableView 中突出显示文本

2024-05-02

我读到,从 JavaFX 8 开始,您可以使用 TextFlow 来突出显示文本。但我不知道如何将它用于我的 TableView。在我的控制器类中,我有这个:

TableView<Person> tvPerson;
TableColumn<Person, String> tcName;
ObservableList<Person> personList;

tcName.setCellValueFactory(new PropertyValueFactory<Person, String>("name"));
tvPerson.setItems(personList);

这是内容类:

public class Person {
    private final SimpleStringProperty name = new SimpleStringProperty("");

    public Person(String name) {
        setName(name);
    }

    public String getName() {
        return name.getValue();
    }
    public void setName(String t) {
        name.set(t);
    }
}

感谢帮助!


有点晚了,但这是我的解决方案(当然这不是“最佳实践”,但对我有用,到目前为止我还没有找到更好的东西)以防有人需要它。这只是某些部分:我认为在这种情况下更容易理解。请注意,该列不可编辑。为了使其可编辑,您需要在“return new TableCell()”中写入方法“startEdit”、“cancelEdit”和“commitEdit”(它超出了这个问题主题)。

    @FXML private TableView<YourEntity> table;

    @Override
    @SuppressWarnings("unchecked")
    public void initialize(URL location, ResourceBundle resources) { 

        TableColumn column1 = new TableColumn(resources.getString("YourShowedColumnName"));
        column1.setCellValueFactory(new PropertyValueFactory<>("YourDBColumnName"));
        table.getColumns().setAll(column1, ..., .......);
        table.setFixedCellSize(20.0); //To not change it in "graphic" with TextFlow

    column1.setCellFactory(column -> {
            return new TableCell<Mandant, String>() {
                @Override
                protected void updateItem(String item, boolean empty) {
                    super.updateItem(item, empty);
                    if (item == null || empty) {
                        setGraphic(null);
                        setText(null);
                        setStyle("");
                    } else {        
                        setGraphic(null);                       
                        if (!searchField.getText().isEmpty() && item.toLowerCase().contains(searchField.getText().toLowerCase())) {
                            Double rowHeight = this.getTableRow().getHeight();
                            setGraphic(buildTextFlow(item, searchField.getText()));
                            setHeight(rowHeight);
                            setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
                        } else {
                            setText(item);
                            setTextFill(Color.BLACK);
                            setStyle("");
                            setContentDisplay(ContentDisplay.TEXT_ONLY);
                        }   
                    }
                }
            };

table.setEditable(true);

    /**
 * Build TextFlow with selected text. Return "case" dependent.
 * 
 * @param text - string with text
 * @param filter - string to select in text
 * @return - TextFlow
 */
private TextFlow buildTextFlow(String text, String filter) {
    int filterIndex = text.toLowerCase().indexOf(filter.toLowerCase());
    Text textBefore = new Text(text.substring(0, filterIndex));
    Text textAfter = new Text(text.substring(filterIndex + filter.length()));
    Text textFilter = new Text(text.substring(filterIndex,  filterIndex + filter.length())); //instead of "filter" to keep "case"
    textFilter.setFill(Color.ORANGE);
    textFilter.setFont(Font.font("Helvetica", FontWeight.BOLD, 12));
    return new TextFlow(textBefore, textFilter, textAfter);
}

希望这对某人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 TextFlow 在 TableView 中突出显示文本 的相关文章

  • JavaFX 自定义列表单元格,updateItem 被多次调用

    我正在使用一个ListView在 JavaFX 应用程序中 列表中的项目需要的不仅仅是一个字符串来显示它们 所以我做了一个自定义实现ListCell
  • 如何使用 Java 11 和 JavaFX 11 运行 ControlsFX 示例应用程序

    ControlFX 网站 http fxexperience com controlsfx says 如果您想使用 ControlsFX 示例应用程序 只需 下载 ControlsFX 版本并在上运行以下命令 命令提示符 请务必将 替换为实
  • 如何使用 JavaFX 中的 JCSG 库将 MeshView 转换为 CSG 对象

    我正在使用 JavaFX 的 JCSG 库 我有一些MeshView我想将它们转换成的对象CSG对象 有办法实现吗 最简单的方法是组合javafx scene shape Mesh对象与 CSG 对象 前提是您有TriangleMesh正在
  • 如何使 AnchorPane 大小响应最大化的屏幕视图

    我不知道什么是灰色地带以及如何扩展我的Anchorpane到整个屏幕Image https i stack imgur com m5HqA png 不是未最大化的视图是这样的image2 https i stack imgur com 14
  • JavaFx ComboBox 绑定混乱

    我有一个 I18N 实现 它通过属性绑定 JavaFX UI 元素 例如 def translateLabel l Label key String args Any Unit l textProperty bind createStrin
  • JavaFX中如何获取鼠标位置?

    我是java fx 的初学者 如何在 JavaFX 中获取鼠标在 x 和 y 中的位置 我尝试使用 AWTMouseInfo 也导入了它 但它不起作用 我还在 Ensembles 中看到了它的代码 在 高级阶段 拖动球窗口 这就是我需要做的
  • xcode9.0,在故事板中,当我将表格视图样式切换为分组时,xcode崩溃了

    在xcode9 0中 我向故事板添加了一个tableview 当我将tableview样式切换为分组时 xcode崩溃了 将新的表格视图拖到视图的顶部 删除自动行高和自动估计的默认检查 选择团体类型 OK
  • JavaFX 2:TableView:删除标题+空时显示网格

    我有两个关于 Javafx 2 中的 TableView 的问题 1 是否可以隐藏表格中的标题 2 当表为空时 它只显示一个白色窗格 上面写着 表中没有内容 是否可以更改此设置以显示默认网格 即使表格为空 如果可能的话 我想要一个带有 CS
  • JavaFx 中装饰且不可移动的舞台

    我想在 JavaFx 中创建一个装饰舞台 它也将不可移动 我正在从另一个控制器类创建这个阶段 我能够创造和展示舞台 但它是自由移动的 我怎样才能创建这个 非常感谢帮助和建议 我把打开新关卡的方法贴出来 private void addRec
  • 如何让 UITableview 在重新加载时转到页面顶部?

    当我调用以下命令时重新加载表数据时 我试图让 UITableview 转到页面顶部 void pickerView UIPickerView pickerView didSelectRow NSInteger row inComponent
  • Swift - 在 TableView 单元格中使用步进器递增标签

    这里又是一个 Swift 初学者 我只是想在每个 TableView 单元格中使用一个步进器来增加同一单元格中的标签 我发现了关于这个主题的几个问题 但它们包含其他元素 我无法提取基本概念 Swift Stepper Action 更改同一
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 如何从 JavaFX 中的另一个控制器类访问 UI 元素?

    我有一个使用 NetBeans 8 编写的 JavaFX Java 8 应用程序 没有SceneBuilder 我的应用程序有一个主窗口 该窗口有自己的 FXML 文件 primary fxml 和自己的控制器类 FXMLPrimaryCo
  • Javafx 从 TextField 获取输入

    这是我当前的代码 它所做的只是为我制作的计算器设置一个 GUI 界面 我希望用户输入两个值 然后当按下 Sum 按钮时 它将两个值加在一起并将其显示在 Sum 文本字段中 我正在尝试使用 JavaFX 如果您能提供一些帮助 我将不胜感激 i
  • 使用多个值过滤 JFX TableView

    我目前正在尝试过滤我的数据TableView using FilteredList with predicate 我有2个ComboBoxes来过滤值 我的表包含Result Each Result has a Student that S
  • 在vscode中使用reactjs报错

    在 Visual Studio 代码中使用 jsx 语法 Visual Studio代码报错 请帮我 谢谢 符号 例如 而不是这样做 return lt button className square gt TODO lt button g
  • Java NoSuchMethodException - 类中确实存在方法

    我正在构建一个 JavaFx 应用程序 我想创建一个接收 GridPane 和 Node 以及添加到窗格中的项目数量的方法 但是 当我调用该方法时 我收到 NoSuchMethodException 作为测试 我尝试创建一个简单的方法pri
  • JavaFX颜色选择器的语言

    有没有办法改变语言ColorPicker的文本 例如 自定义颜色 当前颜色 新颜色 色相 饱和度 亮度 不透明度 保存 使用 取消 编辑 以下答案适合那些需要更多内容的人exotic语言 如果您使用其中之一 de es fr it ja k
  • 带有地图的 JavaFX TableView 对象

    因此 我对 JavaFx TableView 进行了一些挖掘 并找到了一些针对简单情况的不错的解决方案 This article http docs oracle com javafx 2 ui controls table view ht
  • 如何在谓词中对 FilteredList 结果进行优先级排序/排名?

    我的应用程序包含一个TextField and a ListView The TextField允许用户输入搜索词来过滤内容ListView当他们打字时 过滤过程将匹配每个字段中的多个字段DataItem in the ListView如果

随机推荐

  • OT 和 CRDT 之间的区别

    有人可以简单地向我解释一下操作转换和 CRDT 之间的主要区别吗 据我了解 两者都是允许数据在分布式系统的不同节点上无冲突地收敛的算法 在哪种用例中您会使用哪种算法 据我了解 OT主要用于文本 而CRDT更通用 可以处理更高级的结构 对吧
  • 以有效的方式找到最近点

    我在 2d 平面上有一个点 例如 x0 y0 和一组 n 点 x1 y1 xn yn 我想在 a 中找到距离 x0 y0 最近的点比尝试所有要点要好得多 有什么解决办法吗 我还应该说我的观点是这样排序的 bool less point a
  • 如何使用增量值向 Pyspark 中的 DataFrame 添加列?

    我有一个名为 df 的 DataFrame 如下所示 Atr1 Atr2 Atr3 A A A B A A C A A 我想向其中添加一个具有增量值的新列并获取以下更新的 DataFrame Atr1 Atr2 Atr3
  • 根据 iOS 6 通讯录使用文档,第 22 条规则

    根据 iOS6 的文档 应使用 ABAddressBookCreateWithOptions 创建地址簿 它还表示如果调用者无权访问数据库 则此方法将返回 null 但是 访问是通过调用 ABAddressBookRequestAccess
  • 通用搜索 - 重定向到自定义屏幕

    我创建了一个自定义屏幕 它是客户屏幕的副本 问题是 当我们在通用搜索中输入客户 ID 时 如何重定向到自定义屏幕而不是客户屏幕 请查看我们自定义屏幕的图形代码 public class CustomScreen BusinessAccoun
  • Unity3D 不安全代码需要指定“unsafe”命令行选项

    我在用Unity3D 4 3并打电话给DLL我创造的 当尝试调用它唯一的函数时 这是 void GetModelReferences int nVertices float vertices int nTriangles int trian
  • 在 CentOS 6.4 上的 apache 2.0 虚拟主机中创建子域

    我需要在网络服务器上创建子域阿帕奇2 0 CentOS 6 4 PageSpeed Apc 我没有 DNS 服务器 我需要使用虚拟主机 我的代码 NameVirtualHost xx xx xx xx
  • 确定已编译Lua的编译器版本

    我有一些已编译的 LuaQ 我需要确定用于编译它的确切版本 有什么可能的方法吗 编译的脚本在文件开头有一个标头 4 bytes signature x1bLua 1 byte version 0x51 1 byte format 1 byt
  • 如何在 Java 中将 hashmap 转换为 JSON 对象 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在 Java 中将 hashmap 转换或转换为 JSON 对象 然后再次将 JSON 对象转换为 JSON 字符串 您可以使用 new
  • 不分配内存的重复排列

    我正在寻找一种算法来生成列表中重复 4 个元素 长度 2 1000 的所有排列 Java实现 http en literateprograms org Permutations with repetition 28Java 29 问题是上面
  • 将数组传递给 include() javascript

    我试图找出一个字符串是否包含存储在数组中的多个字符串 includes 所以我尝试过 let string hello james console log string includes hello james 但它被返回为false 当我
  • javascript RegExp 的奇怪行为:相同的正则表达式产生不同的结果[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 Javascript 中带有全局标志的 RegExp 会给出错误的结果 https stackoverflow com questions 1520800 why regexp with gl
  • 通过 jclouds 使用 AWS (S3) - 如何承担角色

    使用普通身份验证凭据时 我可以执行以下操作 ContextBuilder newBuilder aws s3 credentials keyId key buildView BlobStoreContext class 访问 S3 的 Bl
  • 如何将 git 存储库转换为 Mercurial?

    我一直在使用 git 作为源代码存储库开发 java 应用程序 我想与其他 java 开发人员分享该项目 hg 似乎是他们最常用的 我的问题是如何将 git 存储库转换为 hg 如果我尝试谷歌搜索 将 git 转换为 hg 并且每次搜索命中
  • 以编程方式将图像添加到RelativeLayout

    我想通过代码添加各种相对布局到线性布局 每个相对布局由以下部分组成 左侧的图像视图 右侧旁边的文本视图 正好在中间 以及右侧的另一个图像 我必须使用从数据库读取的数据来添加它们 它必须使用relativelayout 因为我想在图像上使用一
  • 如何在 C++ 中将方法结果作为参数传递给基类构造函数?

    我试图实现这样的目标 class Base public Base string S class Derived Base public int foo string bar return stringof foo actually som
  • 按属性值对结构体数组进行排序

    我在 C 中有一个任务 使用 qsort 对结构进行排序 struct user enum SEX m f sex char name 32 char phonenr 32 typedef struct user User 用户将存储在一个
  • Haskell Servant 和流媒体

    我正在尝试添加一个功能到我的servant服务器将从 Amazon S3 获取文件并将其流式传输回用户 由于文件可能很大 我不想将它们下载到本地然后将它们提供给客户端 我宁愿将它们直接从 S3 流式传输到客户端 I use Amazonka
  • 如何在 Python 中重命名文件并保留创建日期

    我知道创建日期不存储在文件系统本身中 但是当我使用时我遇到了问题os rename 它正在更新我正在使用的文件的创建日期 是否可以重命名文件而不更改其原始创建日期 正如都铎所说 你可以使用os stat http docs python o
  • 使用 TextFlow 在 TableView 中突出显示文本

    我读到 从 JavaFX 8 开始 您可以使用 TextFlow 来突出显示文本 但我不知道如何将它用于我的 TableView 在我的控制器类中 我有这个 TableView