什麼這個:
.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();
}

非常棒!這正是我需要的。我幾乎已經達到了類似的解決方案,但我很難讓它看起來很乾淨。謝謝! – WillBD 2014-12-02 18:47:19