2014-12-30 19 views
8

Tôi đang cố gắng thay đổi màu nền của TextField "colorBox0" thành "value0" nhưng nó thoát khỏi đường viền.
Đây là một phiên bản đơn giản của mã của tôi:Làm cách nào để thay đổi màu nền của TextField mà không thay đổi đường viền trong javafx?

static Paint value0 = Paint.valueOf("FFFFFF"); 
    TextField colorBox0; 
    colorBox0.setBackground(new Background(new BackgroundFill(value0, CornerRadii.EMPTY, Insets.EMPTY))); 

Bất kỳ sự giúp đỡ rất nhiều đánh giá cao
Thankyou

+0

Wow, đây là bực bội ... –

Trả lời

11

tôi thấy rằng bạn có thể xây dựng một chuỗi mã css ra khỏi một chuỗi và một biến bằng cách sử dụng các phương pháp chuỗi và phương pháp chuỗi như thế này:

colorBox0 
.setStyle("-fx-control-inner-background: #"+value0.toString().substring(2)); 
2

Cố gắng thiết lập các màu sắc sử dụng CSS:

TextField colorBox0; 
colorBox0.setStyle("-fx-background-color: white;"); 
+2

Điều đó không hiệu quả. Nó cũng thay đổi biên giới. Đối với tất cả những người sẽ tìm thấy câu trả lời này. –

+0

Khi OP phát hiện ra, sử dụng '-fx-control-inner-background' thay vì' -fx-background-color' hoạt động. –

6

Nhìn vào (được rút gọn) các kiểu JavaFX mặc định cho số TextField giải thích rất nhiều:

.text-input { 
    -fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border), 
    linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background); 
    -fx-background-insets: 0, 1; 
    -fx-background-radius: 3, 2; 
} 

Vì vậy, nền là nền có lớp bao gồm đường viền. Kỹ thuật này được sử dụng rất nhiều trong suốt JavaFX. Nhưng nó rất dễ dàng để sửa đổi chỉ một màu.

Đầu tiên chúng ta cần phải gán một lớp phong cách tùy chỉnh mới để chúng tôi TextField:

TextField textField = new TextField(); 
textField.getStyleClass().add("custom"); 

và file CSS:

.custom { 
    -fx-control-inner-background: orange; 
} 

Như bạn thấy, bạn không cần phải ghi đè lên tất cả các phong cách của textfield, nó là đủ để chỉ ghi đè lên biến màu được sử dụng cho nền.

+0

Có cách nào để đặt màu nền thành giá trị của giá trị 0 vì tôi muốn có thể thay đổi giá trị0 và lần lượt thay đổi màu nền – sazzy4o

+0

Thay đổi chương trình này sẽ đặt lại tất cả các màu nền. Nhưng bạn cũng có thể thay đổi màu sắc thông qua CSS khi chạy. Ví dụ bằng cách thay đổi lớp kiểu hoặc trạng thái giả. – eckig

+1

Tôi đã sử dụng phiên bản sửa đổi của css để sửa lỗi – sazzy4o

Các vấn đề liên quan