Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx 如何在treetableview中为第一级子级设置样式_Javafx_Treetableview_Javafx Css - Fatal编程技术网

Javafx 如何在treetableview中为第一级子级设置样式

Javafx 如何在treetableview中为第一级子级设置样式,javafx,treetableview,javafx-css,Javafx,Treetableview,Javafx Css,我只想为所有第一个子项设置上边框,这样,对于一个子项,数据将显示在一行中。 但我无法设置这些行的id。我尝试了以下代码,但没有帮助 final PseudoClass firstRowClass = PseudoClass.getPseudoClass("first-child"); devWorkTabBenchtable.setRowFactory(new Callback<TreeTableView<DevWorkTabBench>, TreeTableRow<D

我只想为所有第一个子项设置上边框,这样,对于一个子项,数据将显示在一行中。 但我无法设置这些行的id。我尝试了以下代码,但没有帮助

final PseudoClass firstRowClass = PseudoClass.getPseudoClass("first-child");

devWorkTabBenchtable.setRowFactory(new Callback<TreeTableView<DevWorkTabBench>, TreeTableRow<DevWorkTabBench>>() {

    @Override
    public TreeTableRow<DevWorkTabBench> call(TreeTableView<DevWorkTabBench> param) {
        TreeTableRow<DevWorkTabBench> row = new TreeTableRow<>();
        row.treeItemProperty().addListener(new ChangeListener<TreeItem<DevWorkTabBench>>() {
            int i = 0;

            @Override
            public void changed(ObservableValue<? extends TreeItem<DevWorkTabBench>> observable, TreeItem<DevWorkTabBench> oldValue, TreeItem<DevWorkTabBench> newValue) {
                if (i < param.getRoot().getChildren().size()) {
                    row.pseudoClassStateChanged(firstRowClass, newValue == param.getRoot().getChildren().get(i));
                }
                i++;
            }
        });
        return row;
    }
});
final PseudoClass firstRowClass=PseudoClass.getPseudoClass(“第一个子”);
devWorkTabBenchtable.setRowFactory(新回调(){
@凌驾
公共TreeTableRow调用(TreeTableView参数){
TreeTableRow行=新的TreeTableRow();
row.treeItemProperty().addListener(新的ChangeListener()){
int i=0;
@凌驾
public void已更改(observeValue试试这个

treeTableView.setRowFactory( new Callback<TreeTableView<DevWorkTabBench>, TreeTableRow<DevWorkTabBench>>()
{
    @Override
    public TreeTableRow<DevWorkTabBench> call( TreeTableView<DevWorkTabBench> param )
    {
        TreeTableRow<DevWorkTabBench> row = new TreeTableRow<>();
        row.treeItemProperty().addListener( new ChangeListener<TreeItem<DevWorkTabBench>>()
        {
            @Override
            public void changed( ObservableValue<? extends TreeItem<DevWorkTabBench>> observable, TreeItem<DevWorkTabBench> oldValue, TreeItem<DevWorkTabBench> newValue )
            {
                row.pseudoClassStateChanged( firstRowClass, param.getRoot().getChildren().contains( newValue ) );
            }
        } );
        return row;
    }
} );

您能提供生成的示例标记吗?抱歉,没有得到您要求的内容。运行项目时,这将生成一个页面(html/etc)。您是否可以将其添加进来?它只对一行应用CSS,并且样式在树项的导出或折叠过程中不断移动。@Professor.CSS这是一个JavaFX问题,而不是web应用程序框架问题。嘿,感谢您的解决方案。它工作得非常好。:)我想问的另一件事是,如何为不同的级别应用多个伪类。我尝试给出不同的条件来选择级别,但一次只将css应用于一个级别。没有可用的getLevel()方法。
DevWorkTabBench bench = newValue.getValue();

row.pseudoClassStateChanged( thirdLevelClass, bench.getLevel() == 3 );
// or
row.pseudoClassStateChanged( MyCSSUtils.getClassByLevel(bench.getLevel()), true );