1

我喜欢由 BorderFactory.createLoweredBevelBorder() 创建的带有边框的 JTextField 的 3D 效果。现在我正在使用 JavaFX,边框的 L&F 由 CSS 控制。而默认的外观只是一个简单的线条描边边框。我想出了如何编辑 CSS 文件以加厚边框并更改其颜色:

.text-field { -fx-border-color: color; -fx-border-width: #; }

但是,如果您查看 Swing 生成的降低斜角效果,它是通过在 4 条边中的 2 条边上具有不同的颜色并且将边缘屏障以 45 度角创建的。那么如何使用 CSS 来实现呢?

4

3 回答 3

4

JavaFX CSS参考指南说:

虽然 JavaFX CSS 解析器将解析有效的 CSS 语法,但它并不是一个完全兼容的 CSS 解析器。不应期望解析器处理本文档中未指定的语法。

borderorborder-top和其他人属于此不受支持的类别。
要降低斜边边框,请尝试

.text-field {
    -fx-border-insets: 0;
    -fx-border-width: 2px;
    -fx-border-color: black lightgray lightgray black;
}

或者尝试使用内部阴影的 JavaFX 风格的方式

.text-field {
    -fx-effect: innershadow(three-pass-box, gray, 12 , 0.5, 1, 1);
}

然而,你想要的真正风格可以通过-fx-border-style属性 IMO 来实现。请参阅上面提到的指南。

于 2012-07-25T09:18:02.410 回答
1
-fx-border-color: top right bottom left;
-fx-border-color: transparent transparent red transparent;
于 2016-04-06T21:42:35.307 回答
0

我还没有看到您所指的 Swing 样式,但是根据您的描述,这应该会给您带来斜面的外观。

您应该能够通过简单地将边框定义为inset而不是默认的solid来做到这一点。

.text-field {
    border: 4px inset #aaaaaa;
}

或者,如果您想要更多控制,您可以将边框的每一侧设置为不同的颜色:

.text-field {
    border-top: 4px solid #555555;
    border-left: 4px solid #555555;
    border-bottom: 4px solid #aaaaaa;
    border-right: 4px solid #aaaaaa;
}

​还有outsetridge和其他边界类型可供选择。

于 2012-07-25T00:12:23.143 回答