- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有TreeView,每个元素都实现了Viewable接口(interface):
public interface Viewable {
enum ViewStyle {
NEW("-fx-background-color: b8faa7;"),
NEW_PARENT("-fx-background-color: b8ebbb;"),
LOCKED("-fx-background-color: adadad; "),
HAS_NO_DATA("-fx-background-color: eb8d8d;");
String style;
ViewStyle(String style){
this.style = style;
}
public String getStyle() {
return style;
}
}
ViewStyle getViewStyle();
void setViewStyle(ViewStyle style);
StringProperty styleProperty();
String getTreeItemTitle();
void setTreeItemTitle(String title);
StringProperty titleProperty();
}
每个元素都有自己的.styleProperty(),并从ViewStyle.getStyle()获取值
此属性为每个 TreeCell.styleProperty() 绑定(bind):
treeView.setCellFactory(new Callback<TreeView<Viewable>, TreeCell<Viewable>>() {
@Override
public TreeCell<Viewable> call(TreeView<Viewable> param) {
return new TreeCell<Viewable>() {
@Override
protected void updateItem(Viewable item, boolean empty) {
textProperty().unbind();
styleProperty().unbind();
if (empty || item == null) {
setGraphic(null);
textProperty().set(null);
styleProperty().set(null);
return;
}
if (item != null) {
styleProperty().bind(item.styleProperty());
textProperty().bind(item.titleProperty());
}
super.updateItem(item, empty);
}
};
}
});
问题是树单元格在选择中显示得很丑。即所选单元格的颜色不会改变。只改变字母的颜色(根据默认主题),但不是很方便。因此,可能需要附加 .css 文件。同时,我不明白如何根据当前的 ViewStyle 更改单元格的样式(默认和选中时)。
最佳答案
您可以简单地将 css 属性更改为仅用于未选定单元格的属性 (-fx-control-inner-background
):
enum ViewStyle {
NEW("-fx-control-inner-background: b8faa7;"),
NEW_PARENT("-fx-control-inner-background: b8ebbb;"),
LOCKED("-fx-control-inner-background: adadad; "),
HAS_NO_DATA("-fx-control-inner-background: eb8d8d;");
另请注意,您在 updateItem
方法的覆盖版本中做了一些不应该做的事情:不总是调用 super.updateItem
。这可能导致 filled
/empty
伪类未正确分配,并且 TreeCell
的 item
属性不包含来自最近的 updateItem
调用的元素。你应该做这样的事情:
@Override
protected void updateItem(Viewable item, boolean empty) {
textProperty().unbind();
styleProperty().unbind();
if (empty || item == null) {
setText(null);
setStyle(null);
} else {
styleProperty().bind(item.styleProperty());
textProperty().bind(item.titleProperty());
}
super.updateItem(item, empty);
}
关于JavaFx。按条件更改 TreeItem 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851003/
我正在使用 GWT ,我有树 Widget.TreeItems 在运行时添加。示例: 1.A 2.B 当我点击A时看起来像 1.A 1.ab 2.cd
我关注这个example to create a simple test with a Table where the foreground color was changed 。这按预期工作。 但是
我正在捕获右键单击事件以显示上下文菜单。我一直无法弄清楚的是,如何在显示上下文菜单之前右键单击实际选择 TreeItem。 感谢所有帮助。 private Tree tree = new Tree(
我目前正在使用 JavaFx-2 的 TreeView代表一个文件系统。 我想启用 drag and drop允许移动操作,但它看起来像 TreeItem不包括拖动事件监听器。我只能在 englobi
我想实现一棵树,里面有可检查的根节点和一些参数(实际上,本例中的参数并不重要)。因此,我制作一棵树,然后放置两列,然后放置一个 TreeItem。然后我需要放置一个带有复选框按钮的 TreeEdito
我有一个 TreeItem(一棵包含 100 多个 TreeItems 元素的树)。我想让用户能够隐藏(或再次显示)一些 TreeItems。 (因此用户只会看到他关心的项目)。 我看不到 TreeI
我正在 JavaFX 中使用 TreeView ,我想知道如何区分类型的节点,我的意思是,我有下一个结构: 1.-Agent 1.1-Use Case Diagram 1.1.1-U
我正在使用 TreeTableView (JavaFX 8)。有一些树节点,必须禁用才能选择。我已经尝试过选择事件,但它不起作用。请找到以下代码以获取更多信息。 treeTableView.getSe
我正在开发 Eclipse 插件。在这里我创建了一个单独的 View ,现在我想格式化树节点的颜色。 这些是 createpartcontrol 方法中的代码。 ScrolledComposite s
我有一个TreeViewer,其中当用户选择一个TreeItem并单击“展开”按钮时,应打开TreeItem下的整个层次结构,直到最后一个叶子找到节点。 我在 TreeViewer 上找到了一个现有方
我有一个 JFace TreeViewer,其中用户可以选择一个 TreeItem 并通过菜单选项检查是否是叶节点。 如何实现这一目标? 最佳答案 您可以通过以下方式从树查看器中获取当前选定的对象:
我正在尝试将包含文件路径的工具提示附加到 TreeItem ,这样当我将鼠标悬停在此 TreeItem 周围时,当我将鼠标悬停在其周围时,它将显示文件路径的文本。这在我的代码中不起作用,因为它提示我无
我有以下类(class): class TreeItem>{ private final ObservableList childs; private T parent; pu
我正在尝试创建一种方法来实现标题所说的功能。假设我有下面的 TreeView ,我想添加一个搜索功能,用户可以在其中给出例如一个值 desktop 并使用该方法获取具有给定值的第一个 TreeItem
有TreeView,每个元素都实现了Viewable接口(interface): public interface Viewable { enum ViewStyle { NE
在我的应用程序中,我有一个由树项组成的树结构。 我想做的是改变某些树元素的背景,如果他们的 userObject 满足某些条件。我遇到的问题是,当根树元素的背景发生变化时(仅根据根级别的树元素满足的标
我制作了这个 TreeView : TreeItem root = new TreeItem<>("roothidden"); treeView.setRoot(root);
编辑 #2:由于它看起来像一个错误,我已经在 javaFx-jira 中发布了错误报告.您必须拥有一个帐户才能访问该问题。如果有新信息,我会及时更新这篇文章。 原帖:我有一个带有按钮和 TreeVie
我有一个 TreeItem目的。 我想在里面放一个按钮。 Button button = new Button("Hello!"); root.setGraphic(button); // root
使用标准 GWT 2.0.3 API,如何向 TreeItem 添加 Clickhandler?我希望实现对服务器的异步调用,以检索展开的结果 TreeItem。 不幸的是FastTree在 GXT
我是一名优秀的程序员,十分优秀!