ツリーの列の一部に(テーブルのように見える)列を塗りつぶしています。 Windowsシステムではうまく見えますが、Linux/Macでは背景色(白、青、白、青など)を交互に使用しているためそうではありません。
ツリーの背景色を交互に削除したいと思います。それが可能ならどんなアイデア?私はこれらのシステムでtree.setLinesVisible(true)
を禁止しようとしましたが、必要な縦線も描画しません。SWT Tree with columns:Linux/Mac上の行の背景色を交互に削除する
0
A
答えて
0
オーナードローを使用してこれを行うことができると思います。出発点としてthis snippetを使用し、これにEraseItem
イベントハンドラを交換:
public void handleEvent(Event event) {
event.detail &= ~SWT.HOT;
GC gc = event.gc;
Rectangle area = table.getClientArea();
/*
* If you wish to paint the selection beyond the end of
* last column, you must change the clipping region.
*/
int columnCount = table.getColumnCount();
if (event.index == columnCount - 1 || columnCount == 0) {
int width = area.x + area.width - event.x;
if (width > 0) {
Region region = new Region();
gc.getClipping(region);
region.add(event.x, event.y, width, event.height);
gc.setClipping(region);
region.dispose();
}
}
gc.setAdvanced(true);
if (gc.getAdvanced()) gc.setAlpha(127);
Rectangle rect = event.getBounds();
Color background = gc.getBackground();
gc.setBackground(display.getSystemColor(SWT.COLOR_RED));
gc.fillRectangle(0, rect.y, 500, rect.height);
// restore colors for subsequent drawing
gc.setBackground(background);
}
は(LinuxのウィンドウマネージャのSWTが使用されている)とTrees
で、しかし、それを試していないGTKで動作するはずです。
所有者ドローは、私は強くGTKのため、このようなイベントハンドラを追加することをお勧め高価であるため:
if(SWT.getPlatform().equals("gtk")){ ... }
しかし、SWTの全体のポイントは、ネイティブの描画を持っています。これにより、ユーザーは自宅で感じるため、ソフトウェアのユーザーの受け入れが向上します。たぶん、あなたはGTKユーザーのための交互の背景を取り除く必要がない方法を設計することができます。
関連する問題
- 1. 私のコメントシステムの背景色を交互にする
- 2. HTMLの背景色を交互にするUL
- 3. RecyclerViewアイテムの背景が交互に色が変わる
- 4. divの背景色を交互に表示
- 5. UITableViewAccessoryの背景色を削除
- 6. WPF DataGrid交互の行の背景が機能しません
- 7. WPFリストビュー交互の行の背景データグループではない行
- 8. WPFで行の背景色と列の背景色を交互に変更してリストビューに表示するにはどうすればよいですか?
- 9. MDI親フォームの灰色の背景を削除するには?
- 10. WebstormのAngular 2テンプレートの背景色を削除するには
- 11. faアイコンからブートストラップの背景色を削除するには
- 12. Java SWT - (CTabFolderの)CTabItemのForeGround /背景色を設定する
- 13. ブートストラップテーブルの選択行の背景色を上書きする
- 14. richtextboxの背景色のない文字列を削除する
- 15. 背景色の変更、互い
- 16. 背景色行
- 17. Wordpressのフッターで背景色を削除する方法
- 18. nav-pillsの背景色を削除する
- 19. CSSでPNGファイルの背景色を削除する
- 20. クイルコードブロックの黒い背景色を削除する方法
- 21. リストボックスのボタンから背景色を削除する(Windows Phone)
- 22. アクティビティからグローバルな背景色を削除するには
- 23. ボタンの最初の背景色を削除します
- 24. ホバー上のテーブル行の背景色を変更する
- 25. ビデオと画像の背景を交互に表示
- 26. Zurb foundation - ボタンの背景色を削除しますか?
- 27. ggplot2で色、軸線、背景の削除を指定します
- 28. 検索バーのキャンセルボタンの背景の色合いを削除
- 29. BIRT:テーブルグループ内の交互の行の色
- 30. SSRSグループ内の交互の行の色
これは正確ですが、Mac OS Carbon(特にCocoaで試したことがない)でオーナーの描画をしている落とし穴があることに注意してください。特に、テーブルのスクロールを開始するとペイントイベントが失われます。私は(期待される)ネイティブの行動を維持することに+1します。 –