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

为CheckBoxTablecell添加工具提示

司寇苗宣
2023-03-14

我想在我的模型中使用“reason”属性为CheckBoxTableCell添加一个工具提示。我该怎么做?

import javafx.application.Application;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.stage.Stage;

public class Test extends Application
{

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

    @Override
    public void start(Stage primaryStage) throws Exception
    {
        TableView<Model> table = new TableView();

        table.getItems().add(new Model());
        table.getItems().add(new Model());

        table.getSelectionModel().setCellSelectionEnabled(true);

        TableColumn<Model, Boolean> column = new TableColumn<>("Column");
        column.setCellFactory(CheckBoxTableCell.forTableColumn(column));
        column.setCellValueFactory(features -> features.getValue().flagProperty());

        table.getColumns().add(column);

        final Scene scene = new Scene(table);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public class Model
    {

        private SimpleBooleanProperty flag;
        private SimpleStringProperty reason;

        public Model()
        {
            flag = new SimpleBooleanProperty();
            reason = new SimpleStringProperty();
        }

        /**
         * @return the flag
         */
        public SimpleBooleanProperty flagProperty()
        {
            return flag;
        }

        public SimpleStringProperty reasonProperty()
        {
            return reason;
        }

    }
}

共有1个答案

鲜于德业
2023-03-14

使用行工厂:

    table.setRowFactory(tv -> new TableRow<>() {
        private Tooltip tooltip = new Tooltip();
        @Override
        protected void updateItem(Model item, boolean empty) {
            super.updateItem(item, empty);
            if (empty || item == null) {
                setTooltip(null);
            } else {
                tooltip.textProperty().bind(item.reasonProperty());
                setTooltip(tooltip);
            }
        }
    });

每当该行用于显示新的Model实例时,都会调用该行的updateItem()方法。空行将其工具提示设置为空;非空行将其工具提示设置为工具提示实例,并将工具提示的文本绑定到模型中的值。绑定确保在原因更改时更新工具提示。

您可能希望使逻辑更加复杂,例如,仅在文本为非空或未设置标志时才显示工具提示。

 类似资料:
  • 问题内容: 我只想在JTextPane中的某些文本上添加一些工具提示。例如,如果JTextPane中有参考链接文本,我想在该文本中添加工具提示以显示链接。有什么办法可以实现此功能? 问题答案: 好问题。 First Swing支持HTML,因此要显示带有链接的工具提示,您只需说: 问题是使此工具提示可单击。 不幸的是,它不是由Swing本身完成的。 工具提示由ToolTipManager创建。当您

  • 问题内容: 我有这样的div标签: 如何在div 上显示工具提示,最好具有淡入/淡出效果。 问题答案: 对于基本工具提示,您需要: 对于更高级的javascript版本,您可以查看以下内容: https://jqueryhouse.com/best-jquery-tooltip- plugins/ 上面的链接为您提供了25个工具提示选项。

  • 问题内容: 如何在JTable的行中添加工具提示(Java Swing)?这些工具提示应包含相对行的相同值。 这是我在扩展JTable的类中使用的代码。它覆盖了方法“ prepareRenderer”,但是我得到了空单元格,并且为行中的每个单元格添加了一个工具提示,而不是整个行的一个工具提示(这就是我想要的): 问题答案: 它为行中的每个单元格添加了一个工具提示,而不是整个行中的一个工具提示 您正

  • 我有一系列svg矩形(使用D3.js),我想在mouseover上显示一条消息,该消息应该被一个充当背景的框包围。它们应该彼此完全对齐,并与矩形(在顶部和居中)完全对齐。做这件事最好的方法是什么? 我尝试使用“x”、“y”、“width”和“height”属性添加一个svg文本,然后预置一个svg rect。问题是文本的参考点在中间(因为我希望它居中对齐,所以我使用了),但对于矩形,它是左上的坐标

  • 问题内容: 在下面的代码中,我希望用户悬停跨度时出现工具提示,我该怎么做?我不想使用任何链接。 问题答案: 这是简单的内置方法: 这为您提供纯文本工具提示。如果要使用格式丰富的HTML的丰富工具提示,则需要使用库来完成。幸运的是,这些工作量很大。

  • 问题内容: 我有一系列的svg矩形(使用D3.js),我想在鼠标悬停时显示一条消息,该消息应被用作背景的框包围。它们应彼此完全对齐,并与矩形(顶部和中心)完全对齐。做这个的最好方式是什么? 我尝试使用“ x”,“ y”,“ width”和“ height”属性添加svg文本,然后在svg rect之前添加。问题是文本的参考点在中间(因为我想使它居中对齐),但是对于矩形,它是左上角的坐标,而且我想在