什么这个:
.copyable-label {
-fx-background-color: rgba(255,255,255,0.75),
linear-gradient(to bottom,#aaaaaa 0%,#cccccc 100%);
-fx-background-insets: 0,1;
-fx-padding: 7px;
-fx-background-radius: 3px;
-fx-border-radius: 3px;
-fx-effect: innershadow(three-pass-box, rgba(0,0,0,0.75),1,0,1,1);
-fx-font: 14px "Arial";
-fx-text-fill: black;
}
我使用了@ Chen-Asraf建议的样式,但在JavaFX中。
主要的区别是你不能在对方顶部应用几种效果,但是你可以在背景上应用它。对背景颜色使用逗号分隔值,背面为白色,顶部为线性渐变,但带有1个像素插图,因此如果未应用效果,则可以看到白色的1px边框。
黑色内部阴影应用1 px半径和1x1偏移量。这可以使用三层的背景并没有什么作用也产生:
.copyable-label {
-fx-background-color: rgba(0,0,0,0.75),
rgba(255,255,255,0.75),
linear-gradient(to bottom,#aaaaaa 0%,#cccccc 100%);
-fx-background-insets: 0 1 1 0, 1 0 0 1, 1;
-fx-padding: 7px;
-fx-background-radius: 3px;
-fx-border-radius: 3px;
-fx-font: 14px "Arial";
-fx-text-fill: black;
}
这一幕有Label
和Textfield
,两者具有相同的风格。将文本字段设置为不可编辑,这些控件之间的唯一区别是您只能选择和复制文本字段的文本。
@Override
public void start(Stage primaryStage) {
Label label=new Label("Text");
label.getStyleClass().add("copyable-label");
label.setPrefWidth(100);
TextField textField=new TextField("Text");
textField.setEditable(false);
textField.getStyleClass().add("copyable-label");
textField.setPrefWidth(100);
textField.setMinWidth(100);
textField.setMaxWidth(100);
VBox root = new VBox(20,label,textField, new Button("Ok"));
root.setStyle("-fx-background-color: #ccc;");
root.setAlignment(Pos.CENTER);
Scene scene = new Scene(root, 300, 250);
scene.getStylesheets().add(getClass().getResource("root.css").toExternalForm());
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
![Styled Label and TextField](https://i.stack.imgur.com/m4Uw5.png)
非常棒!这正是我需要的。我几乎已经达到了类似的解决方案,但我很难让它看起来很干净。谢谢! – WillBD 2014-12-02 18:47:19