标签: javafx

表格单元格中的 TreeView Java FX 8

我的 UI 中有一个 TableView,它显示数据库中的用户列表。该表的一列是可编辑的,当启用编辑时,该特定列的单元格将变成树形视图,列出可以选择的各种选项。

只是为了澄清,我试图在表格单元格上实现类似日期选择器或颜色选择器的功能,但使用我自己的项目列表作为树。

该表是这样定义的

private TableView<User> userTable;
Run Code Online (Sandbox Code Playgroud)

显示树视图的特定列定义如下

private TableColumn<User, TreeView> col4;
Run Code Online (Sandbox Code Playgroud)

我设置了像这样的 setcellFactory 方法来显示树

col4.setCellFactory(new Callback<TableColumn<User,TreeView>, TableCell<User,TreeView>>() {

            @Override
            public TableCell<User, TreeView> call(
                    TableColumn<User, TreeView> param)
            {
                returns a comboboxtablecell which is filled with a tree
            }
    });
Run Code Online (Sandbox Code Playgroud)

在表中的相应列中,当我单击单元格时,该单元格显示一个组合框,打开时的组合框显示树值。

但是,当单元格处于不可编辑状态时,我不确定应该如何使用字符串值设置 setcellValuefactory

col4.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<User,TreeView>, ObservableValue<TreeView>>() {

        @Override
        public ObservableValue<TreeView> call(
                CellDataFeatures< User,TreeView> param)
        {
                     }
  }
Run Code Online (Sandbox Code Playgroud)

当单元格处于不可编辑状态时,我想将树视图内的值显示为字符串。我不知道如何根据方法签名返回树视图类型的可观察值并仍然显示字符串。

java javafx javafx-2 javafx-8

0
推荐指数
1
解决办法
2597
查看次数

超时后如何取消任务?

我有一些Task执行可能挂起的 I/O 阻塞操作(从 中获取文件URL

task = new Task<List<WSDLOperation>>() {
            @Override
            protected List<WSDLOperation> call() {
                List<WSDLOperation> services = new ArrayList<>();
                try {
                    services = WSDLService.createService(wsdlURL).getOperations();
                } catch (Exception ex) {
                    LOG.log(Level.WARNING, "Can't reach {0}", wsdlURL);
                }
                return services;
            }
        };

    }
Run Code Online (Sandbox Code Playgroud)

该方法createService可以永远等待而不抛出任何Exception。(我使用Main 类中定义的全局 ( static public)执行任务)。ExecutorService

java concurrency javafx javafx-8

0
推荐指数
1
解决办法
6231
查看次数

如何使 TreeView 中的 TreeItem 确认鼠标单击事件?

fxml文件如下(省略头文件):

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
    minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0"
    xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
    fx:id="pane"
    fx:controller="com.github.parboiled1.grappa.debugger.mainwindow.MainWindowUi">
    <top>
        <MenuBar BorderPane.alignment="CENTER">
            <Menu mnemonicParsing="false" text="File">
                <MenuItem fx:id="loadInput" mnemonicParsing="false"
                    text="Load file" onAction="#loadFileEvent"/>
                <MenuItem fx:id="parse" mnemonicParsing="false"
                    text="Parse" onAction="#parseEvent"/>
                <MenuItem fx:id="closeButton" mnemonicParsing="false"
                    text="Close" onAction="#closeWindowEvent"/>
            </Menu>
        </MenuBar>
    </top>
    <center>
        <SplitPane dividerPositions="0.5" prefHeight="160.0" prefWidth="200.0"
            BorderPane.alignment="CENTER">
            <SplitPane dividerPositions="0.5" orientation="VERTICAL">
                <TreeView fx:id="traceTree" prefHeight="200.0"
                    prefWidth="200.0" editable="false"/>
                <TextArea fx:id="traceDetail" prefHeight="200.0"
                    prefWidth="200.0"/>
            </SplitPane>
            <TextArea fx:id="inputText" prefHeight="200.0" prefWidth="200.0"/>
        </SplitPane>
    </center>
</BorderPane>
Run Code Online (Sandbox Code Playgroud)

TreeView我可以毫无问题地设置根。树已更新,没有问题。

我遇到的问题是我无法设法在视图中的给定项目上触发事件。我尝试使用onMouseClicked简单的 System.out.println() 添加一个事件,无论我在树中单击哪个项目,我都可以看到该事件被触发。但我根本无法获取视图中已单击的项目。

我怎么做?

java javafx fxml javafx-8

0
推荐指数
1
解决办法
4333
查看次数

在Javafx中为treetableview的列标题设置Tooltip

我有动态树表。如何设置列标题的工具提示,显示标题文本。下面的代码显示特定单元格的工具提示,但我不知道在哪里设置它的标题文本。

    for (Entry<String, String> ent : dc.getSortedAssignedOrg().entrySet()) {

        TreeTableColumn<String, ArrayList<String>> col = new TreeTableColumn<>(
                ent.getValue());
col.setCellFactory(new Callback<TreeTableColumn<String, ArrayList<String>>, TreeTableCell<String, ArrayList<String>>>() {
            @Override
            public TreeTableCell<String, ArrayList<String>> call(
                    TreeTableColumn<String, ArrayList<String>> param) {
                return new TreeTableCell<String, ArrayList<String>>() {
                    public void updateItem(ArrayList<String> item,
                            boolean empty) {
                        super.updateItem(item, empty);


                        if (item == null || empty) {
                            setStyle("");
                            setText("");
                        } else if (item.contains("Green")) {
                            float weightInt = Float.parseFloat(item.get(0));
                            float res = weightInt * 1;
                            String resString = Float.toString(res);
                            this.setStyle("-fx-background-color:green");
                            setTooltip(new Tooltip(item.get(2)));
                            setText(resString);
                        } else if (item.contains("yellow")) …
Run Code Online (Sandbox Code Playgroud)

javafx tooltip columnheader

0
推荐指数
1
解决办法
1126
查看次数

JavaFX:TableView 行选择

我第一次从事 java/Javafx 项目,我有一个TableView(姓名、名字、年龄...)来呈现我的数据,我需要用户能够选择一行我每次有关此人(其他列)的所有信息,即使他单击另一列,但我一直无法找到正确的方法来做到这一点。当我选择一行时,我的代码每次都会给出我单击的单元格的值,但我需要其他信息在我的 SQLite 数据库中搜索并对其进行处理(删除/编辑此人..)

这是我使用的代码:

...//rest of code

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

private TableView<Student> tbl_elev=new TableView<Student>();

...

tbl_elev.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() {
            @Override
            public void changed(ObservableValue<?> observableValue, Object oldValue, Object newValue) {
                //Check whether item is selected and set value of selected item to Label
                if (tbl_elev.getSelectionModel().getSelectedItem() != null) {
                    TableViewSelectionModel<Student> selectionModel = tbl_elev.getSelectionModel();
                    ObservableList<?> selectedCells = selectionModel.getSelectedCells();
                    @SuppressWarnings("unchecked")
                    TablePosition<Object, ?> tablePosition = (TablePosition<Object, ?>) selectedCells.get(0);
                    Object …
Run Code Online (Sandbox Code Playgroud)

java javafx tableview

0
推荐指数
1
解决办法
8768
查看次数

JavaFX CSS 样式:更改所选选项卡的突出显示颜色

我正在尝试更改所选选项卡的突出显示颜色。看起来标准是蓝色的,但它不是,-fx-border-color因为它在蓝色突出显示的顶部添加了边框。我想知道什么属性改变了这种颜色。参见下图:

在此输入图像描述

在此输入图像描述

css javafx

0
推荐指数
1
解决办法
4154
查看次数

(javafx)表格视图列的宽度如何自动取决于内容

当我双击列标题单元格的右边框时 - 它会自动调整列的宽度。 我怎样才能以编程方式做同样的事情?

javafx

0
推荐指数
1
解决办法
5204
查看次数

如何根据 JavaFX 中的条件设置列表视图单元格的样式

我试图根据条件设置列表视图中各个单元格的样式。列表视图的类型是Label,在列表视图中插入标签时,条件是根据另一个类确定的。

目前,我尝试设置列表视图中每个标签的背景颜色,但它没有覆盖整个区域(见图)。

在此输入图像描述

我也研究了这篇文章,但它不适合我的情况,因为字符串中不包含用于突出显示列表视图单元格的标识符。

如何动态更改 JavaFX 中列表视图中项目的背景

到目前为止的当前代码:

for (Consultation c : notifications){
            Label l = new Label(": consult reminder - "  + c.getReminderTime());

            if(c.getReminderRead() == 1){ //if the consultation reminder hasn't been read
                l.setStyle("-fx-background-color: #33CEFF");
                counter = counter + 1;
            }


            notificationList.getItems().add(l);
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

css java listview javafx

0
推荐指数
1
解决办法
2811
查看次数

0
推荐指数
1
解决办法
134
查看次数

JavaFX CSS 中的 -fx-text-fill 和 -fx-text-inner-color 有什么区别?

JavaFX CSS 参考指南中,-fx-text-fill对使用它的属性有足够的了解。

在最近更新到 JavaFX 16 的更大的 JavaFX 项目上工作时,我遇到了一些 CSS 代码,这些代码-fx-text-inner-color显然用于实现完全相同的事情,即更改(在我的情况下)TextField 控件的文本颜色。

由于我找不到关于第二个财产的任何文件,我决定在这里询问。

有人能解释一下这两个属性之间的区别吗,为什么我们需要这两个属性,以及什么时候更喜欢一个?

css java javafx javafx-css

0
推荐指数
1
解决办法
53
查看次数