2012-07-10 36 views
8

Trong ứng dụng Java dành cho máy tính để bàn có GUI dựa trên SWT, chúng tôi có một bảng trong đó một số hàng phải trải rộng trên nhiều cột. Điều này đã được giải quyết bằng cách tiếp cận được hiển thị trong Đoạn mã SWT chính thức này: Snippet239.javaSWT: Bảng có các ô trải dài cột

Tuy nhiên, sau này, có một vấn đề lớn với phương pháp này trên Ubuntu với chủ đề Tuyệt đối/Tuyệt đối: Luôn có các đường thẳng đứng giữa các cột, ngay cả đối với các ô có nhiều cột. Này được thể hiện trong ảnh chụp màn hình sau đây:

Ubuntu with Ambiance/Radiance theme

Ubuntu with Clearlooks theme

Như bạn có thể thấy, trong ảnh chụp màn hình đầu tiên có một đường thẳng đứng giữa Cột 1 và cột 2. Có ai có một ý tưởng làm thế nào để có được loại bỏ những dòng này?

Chúng tôi đã thử như sau:

  • Table.setLinesVisible(false): Không làm việc, các đường thẳng đứng không biến mất.
  • Sử dụng nhà cung cấp nhãn dựa trên chủ sở hữu để vẽ các đường thẳng đứng đó: Không hoạt động, các đường thẳng đứng dường như được vẽ trên đầu mọi thứ được vẽ bởi nhà cung cấp nhãn.
  • Đính kèm người nghe sơn vào bảng để vẽ các đường thẳng đứng: Không hoạt động, bởi vì có rất nhiều trục trặc bất cứ khi nào bảng được cuộn hoặc được cập nhật khác.
  • Nebula project có tiện ích con lưới nơi các ô có thể mở rộng nhiều cột và không có vấn đề gì với các đường thẳng đứng vì toàn bộ bảng được vẽ không nguyên bản. Tuy nhiên, chúng tôi không thể biện minh cho nỗ lực thay thế bảng của chúng tôi bằng tiện ích Grid chỉ để khắc phục vấn đề đường dọc trên một nền tảng cụ thể với các chủ đề nhất định. Ngoài ra, tiện ích Grid dường như là phiên bản alpha trước khi phát hành.

Dựa trên những điều chúng tôi đã thử, tôi cho rằng cách duy nhất còn lại là nhét xung quanh trong nội bộ cụ thể của SWT, nhưng tôi thậm chí không biết bắt đầu từ đâu đó như thế.

+3

Âm thanh như lỗi này https://bugs.eclipse.org/bugs/show_bug.cgi?id=138909 không có nhiều chuyển động trên đó. Một điều bạn nên làm, cũng như nhìn vào cách giải quyết, là để bump lỗi này. – katsharp

+0

Đây có phải là phương pháp giống như bạn có nghĩa là bởi setLinesVisible? table.setShowGrid (false); – Logan

+0

@Logan: Tiện ích Bảng SWT không có phương thức setShowGrid, AFAIK. Có lẽ bạn có nghĩa là JTable từ Swing? –

Trả lời

0

Chúng tôi đã giải quyết vấn đề này bằng cách sử dụng một Table với một cột chủ sở hữu rút ra mô phỏng nhiều cột.

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