【问题标题】:JavaFX - CSS styling listviewJavaFX - CSS 样式列表视图
【发布时间】:2013-03-26 15:51:04
【问题描述】:

我有一个 ListView 并想要以下内容:

  • 带有白色背景颜色的奇数行;
  • ListView:当鼠标悬停在项目上时,用蓝色阴影突出显示;
  • ListView:当一个item被选中时,用渐变绘制它;
  • ListView:当ListView失去焦点时,选择的item应该用渐变绘制;
  • ListView:所有项目都以黑色文本填充开始。但在鼠标悬停和/或选中时,它将变为白色。

这是我的代码。它工作正常,除了偶数行:鼠标悬停时,它以白色突出显示。因此,文本是白色的,无法显示。它有什么问题?

.list-cell:filled:selected:focused, .list-cell:filled:selected {
    -fx-background-color: linear-gradient(#328BDB 0%, #207BCF 25%, #1973C9 75%, #0A65BF 100%);
    -fx-text-fill: white;
}

.list-cell:odd {
    -fx-cell-hover-color: #0093ff;
    -fx-background-color: white;
}

.list-cell:filled:hover {
    -fx-cell-hover-color: #0093ff;
    -fx-text-fill: white;
}

提前致谢。

【问题讨论】:

    标签: css listview javafx


    【解决方案1】:

    编辑:

    稍微改变你的css:

    .list-cell:filled:selected:focused, .list-cell:filled:selected {
        -fx-background-color: linear-gradient(#328BDB 0%, #207BCF 25%, #1973C9 75%, #0A65BF 100%);
        -fx-text-fill: white;
    }
    
    .list-cell:even { /* <=== changed to even */
        -fx-background-color: white;
    }
    
    .list-cell:filled:hover {
        -fx-background-color: #0093ff;
        -fx-text-fill: white;
    }
    

    此 css 生成以下演示文稿:

    这是否符合您的期望?

    我将odd 更改为even。第一个单元格是偶数,因为它的索引值为 0(零)。 -fx-cell-hover-color 也无效。我在需要的地方将其更改为 -fx-background-color 或将其删除。


    原文:(注意这里对奇/偶有不同的解释)

    我的看法是这样的:
    (我将您的要求包含在编号列表中,以供在 css 中参考。我还使渐变更加明显,并为偶数单元格添加了绿色背景。)

    /*
    1. Odd rows with white background color;
    2. ListView: when mouse over an item, highlight with a blue shade;
    3. ListView: when an item is selected, paint it with a gradient;
    4. ListView: when focus is lost from ListView, selected item should be painted with gradient;
    5. ListView: all items will start with text-fill black. But on mouse over and/or selected it will change to white.
    */
    
    .list-cell:filled:selected:focused, .list-cell:filled:selected {
        /* 3:, 4: */
        -fx-background-color: linear-gradient(#333 0%, #777 25%, #aaa 75%, #eee 100%);
        -fx-text-fill: white; /* 5 */
    }
    .list-cell { -fx-text-fill: black; /* 5 */ }
    .list-cell:odd { -fx-background-color: white; /* 1 */ }
    .list-cell:even { -fx-background-color: #8f8; /* for information */ }
    .list-cell:filled:hover { 
        -fx-background-color: #00f; /* 2 */
        -fx-text-fill: white; /* 5 */
    }
    

    这导致了这个渲染:

    【讨论】:

    • 感谢您的回答。但我的主要问题是 Odd Selected rows。鼠标悬停时,-fx-text-fill 工作并得到白色。但它的背景颜色也会变白。
    • 我的印象是,您可能对哪个单元格是偶数哪个是奇数有其他期望。我添加了一个稍微修改过的 CSS 变体,它不会给出完全白色的单元格。这样更好吗?
    • 这很有帮助。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2017-09-17
    • 2017-05-17
    • 1970-01-01
    • 2011-12-08
    • 2015-08-21
    • 2016-01-01
    相关资源
    最近更新 更多