2012-03-20 15 views
5

Tôi đang sử dụng JXTable và tôi biết cách thực hiện điều này dựa trên DefaultRenderers cho JTable, nhưng tôi muốn biết cách thực hiện theo cách JXTable dựa trên HighlighterPipeline.SwingX JXTable: sử dụng ColorHighlighter để tô màu hàng dựa trên "đối tượng hàng"

Tôi có một danh sách các đối tượng được hiển thị trong một bảng và mỗi hàng đại diện cho một đối tượng. Tôi muốn tô màu các hàng hiển thị các đối tượng của một loại nhất định một màu khác nhau.

Có vẻ như tôi nên sử dụng ColorHighlighter. Nhưng tôi không thể tìm thấy các ví dụ cho điều này, khác hơn là tô màu đơn giản như "màu sắc mỗi hàng khác" hoặc một số điều như vậy.

Tôi cần số hàng vì không có thứ như "đối tượng hàng" trong mô hình JTable/TableModel, nhưng nếu tôi có thể làm điều đó, tôi có thể dễ dàng kiểm tra vị từ và trả về true/false để báo cho highlighter đá vào hay không.

Ai đó có thể giúp tôi tìm ra đúng hướng để làm việc này không?

Trả lời

4

đừng bận tâm, tôi đã tìm ra. Thật khó để tìm ra cách để sử dụng ComponentAdapter một cách thích hợp.

JXTable table = ... 
final List<Item> itemList = ... 

final HighlightPredicate myPredicate = new HighlightPredicate() { 
     @Override 
     public boolean isHighlighted(
      Component renderer, 
      ComponentAdapter adapter) { 

      Item item = itemList.get(adapter.row); 
      return testItem(item); 
     } 

     public boolean testItem(Item item) { ... } 
} 

ColorHighlighter highlighter = new ColorHighlighter(
     myPredicate, 
     Color.RED, // background color 
     null);  // no change in foreground color 

table.addHighlighter(highlighter); 
+1

vui mừng bạn đã tìm thấy một giải pháp - chỉ cần hãy cẩn thận: các adapter.row là theo quan điểm tọa độ trong khi itemList của bạn (hầu hết có lẽ?) Là trong mô hình tọa độ, do đó kiểm tra sẽ trả về kết quả không chính xác nếu bảng được sắp xếp/lọc. Để khắc phục, hãy gọi adapter.convertRowIndexToModel – kleopatra

+0

ok cảm ơn - Tôi vô hiệu hóa việc sắp xếp của JXTable nhằm mục đích sử dụng các cơ sở phân loại của GlazedLists, vì vậy các chỉ mục của tôi kết hợp với các hàng được hiển thị cuối cùng. cảm ơn mặc dù! –

+0

p.s. những gì đã xảy ra với đường ống Highlighter? họ đã biến mất chưa? Tôi đang cố gắng tìm thông tin chung về các đánh dấu JXTable và đó là một bộ sưu tập ngẫu nhiên về những thứ lỗi thời. –