2013-05-24 60 views
6

Chúng tôi đang sử dụng một lớp sau đây để hiển thị một tiến trình thanh trong ứng dụng Java của chúng tôi: TextProgressBarBắt thoát khỏi nhấp nháy trong SWT

Thật không may, chúng tôi đang gặp một số vấn đề với nhấp nháy khi sử dụng đó (Win 7, Java 7) . Bạn có lời khuyên nào về cách chúng ta có thể tránh điều đó không? Chúng ta có thể bằng cách nào đó vẽ lại nó ít thường xuyên hơn, sử dụng bộ đệm đôi hay cái gì khác? Bất kỳ lời khuyên được đánh giá rất nhiều!

+2

Trước hết, bạn có thấy ghi chú trong Javadoc không? "Hạn chế: Lớp này không có ý định được phân lớp bởi khách hàng". Bạn chắc chắn nên thử 'SWT.DOUBLE_BUFFERED' trước tiên, nhưng không có sự đảm bảo nào cho trường hợp của bạn. –

Trả lời

4

Trước tiên, hãy thử chuyển SWT.DOUBLE_BUFFERED vào cho thông số kiểu đang được xây dựng. Nếu điều đó không cải thiện được tình huống, hãy di chuyển chuỗi gốc và thêm SWT.DOUBLE_BUFFERED vào cuộc gọi hàm tạo của họ thay thế.

Nếu bạn không có quyền kiểm soát đối với phụ huynh, thì bạn có thể cần phải bọc điều khiển của mình trong một Hỗn hợp khác đã bật cờ này.

+0

Cảm ơn, tôi đã thử nhưng tiếc là nó không hoạt động. Tôi đã thử thêm nó vào constructor của TextProgressBar và tôi cũng đã cố gắng tổng hợp cha. – Yrlec

+1

Điều gì đang kích hoạt việc vẽ lại bạn đang thấy? Nếu bạn có thể xác định một khu vực mà nó chỉ được gọi là quá thường xuyên, bạn có thể bọc rằng với một cuộc gọi đến .setRedraw (false) trên điều khiển của bạn, làm công việc gây ra nhanh chóng vẽ lại bình thường, sau đó gọi .setRedraw (true) cuối cùng. –

-3

bạn có thể thử trì hoãn thời gian với thread.sleep(). Nó hoạt động cho tôi khi tôi gặp vấn đề tương tự khi làm việc với jTables

+1

Xin lưu ý rằng tôi đang nói về SWT. Không Swing. – Yrlec

1

trước tiên hãy thử SWT.NO_BACKGROUND và nếu không sử dụng SWT.DOUBLE_BUFFERED. Không sử dụng cả hai cùng một lúc, vì không có điểm. Xem discussion

1

Tuyên bố từ chối trách nhiệm: Tôi biết rằng câu hỏi yêu cầu cụ thể về TextProgressBar. Tuy nhiên, tôi tin rằng nhiều quan điểm của câu hỏi này không giới hạn trong tiện ích này.

Tôi đã có một vấn đề với các nhấp nháy của widget Text, mà tôi không thể giải quyết không phải bằng công SWT.DOUBLE_BUFFERED phong cách, cũng không phải bằng cách gói nó với Composite, cũng không phải bằng cách áp dụng bất kỳ sự kết hợp của họ.

Cuối cùng, tôi đã có thể giải quyết vấn đề này bằng cách thay đổi loại tiện ích con từ Text thành StyledText. Không có nhấp nháy nào ngay cả khi không có kiểu SWT.DOUBLE_BUFFERED và không có nắp đậy Composite.

Hy vọng điều này sẽ giúp người bị thu hút bởi tiêu đề rộng của câu hỏi này.

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