2013-02-05 30 views
5

Tôi có một ListCell trong đó tôi hiển thị thông tin tiến trình của một tệp tải xuống bởi ProgressIndicator.JavaFX 2.2 - Ẩn tỷ lệ phần trăm của tiến trìnhIndicator trong ListCell

Vấn đề của tôi là xóa thông tin phần trăm được hiển thị bên dưới chỉ báo. Như đã trình bày here, tôi có một quy tắc trong css của tôi như sau:

.customProgressIndicator .percentage{ 
    visibility: hidden; 
    -fx-text-background-color: red; 
} 

Phần -fx-text-background-color: red chỉ là để đảm bảo rằng chúng tôi css được áp dụng cho các node.

Vấn đề là, tôi thực hiện cuộc gọi như indicator.setProgress(progress), tỷ lệ phần trăm sẽ hiển thị (màu đỏ) và khi tôi di con trỏ qua chỉ báo, nó sẽ trở thành vô hình một lần nữa. Một lần nữa ở cuối, văn bản "Xong" sẽ hiển thị ở phía dưới khi gọi indicator.setProgress(1.0), và một lần nữa trở thành vô hình sau khi di chuột.

Nó có thể liên quan với ListView vì; sau khi lơ lửng và làm cho nó trở nên vô hình, nếu tôi xóa một mục khỏi List và gây ra một updateItem trên ListCell, nó sẽ trở lại hiển thị.

Tôi đã thử một workaround như:

Text text = (Text)indicator.lookup(".percentage"); 
    if (text != null) 
    { 
     text.setText(""); 
    } 

Nhưng textđôi khi null, đôi khi không.

Trả lời

10

Ghi chú:

1) Tôi đọc bài bạn liên kết và OP ngầm khẳng định visibility: hidden; đang làm việc cho ông/bà. Nhưng tôi đã thử nghiệm cùng một mã và nó không hoạt động. Có thể do sự khác biệt phiên bản. Tôi không biết.

2) -fx-text-background-color không phải là thuộc tính CSS. Nó là một màu được xác định trước trong một caspian.css. Vì vậy, thay đổi nó, bạn đang thay đổi hoàn toàn màu của nhãn phần trăm, được định nghĩa là mặc định trong

.progress-indicator .percentage { 
    -fx-font-size: 0.916667em; /* 11pt - 1 less than the default font */ 
    -fx-fill: -fx-text-background-color; 
} 

của caspian.css. (Lưu ý -fx-text-background-color trên)

3) Cuối cùng, hiệu ứng bạn muốn có thể được thực hiện thông qua

.customProgressIndicator .percentage { 
    -fx-fill: null; 
} 

T.B. Tôi đã không kiểm tra chỉ báo tiến trình bên trong một listview.

+0

Cảm ơn rất nhiều! Bạn là một người tiết kiệm cuộc sống! – Ramazan

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