4

私はここで助けが必要な奇妙な状況に陥りました。

を使用して、かなり単純なJFaceテーブルを作成しますTableViewer。これ以上何もしないと、次の動作が見られます。セルのテキストが大きすぎると、少し待つとテキスト全体を示すツールチップが表示されます。これは正常な動作であり、ネイティブコントロールがこれらのツールチップを描画すると思います。

次に、独自のカスタムツールチップを追加しました。

ColumnViewerToolTipSupport.enableFor( tableViewer, ToolTip.NO_RECREATE );

getToolTipText()そして、ラベルプロバイダーの方法を使用して(異なる)テキストを配信します。

それはうまくいきます-ほとんど。問題が1つあります。最初に(常にではありませんが)最初にネイティブのツールチップが表示され、その後すぐに、次のスクリーンショットに示すように、カスタムのツールチップがその上に描画されます。

2つのツールチップを示すスクリーンショット

各セルが描画したいネイティブツールチップを効果的に無効にする方法がわかりません。地獄のように醜いです...

私のための手がかりはありますか?

4

3 に答える 3

4

次のように、ネイティブ テーブルのツールチップを効果的に無効にすることができます。

viewer.getTable().setToolTipText("");

こちらもご覧ください...

参考のため。

于 2015-03-11T16:03:07.633 に答える
2

@Jörgの答えに追加したい:

テーブルのツール ヒントを空の文字列に設定した後も、いくつかの列にはツール ヒントがあり、他の列にはツール ヒントがない複数列のテーブルで 2 つのツール ヒントが表示されることがありました。

その理由は、CellLabelProviderツールチップのない列の sがメソッド (デフォルト) およびメソッド (デフォルト)nullから返されたためです。これにより、テーブルのツールチップが にリセットされました。( ColumnViewerToolTipSupportの 174 行目を参照)。getToolTipText()falseuseNativeToolTip()null

私の最初の試みは、ラベル プロバイダーが から空の文字列を返せるようにすることでしたgetToolTipText()。これでツールチップが重複する問題は修正されましたが、空のカスタム ツールチップが表示されるようになりました (ため息)。しかし、useNativeToolTip()true を返すようにすることで、最終的に問題が解決しました。

ほとんどの場合、マウス ポインターをツールヒントのない列からツールヒントのある列に移動すると、ツールヒントは表示されません。回避策については、この記事を参照してください: JFace TableViewer のネイティブ ツールチップが問題なく機能しない

何らかの理由で非ネイティブのツールチップが必要な場合は、 whenが空の文字列を返すuseNativeToolTip()ときに true を返すようにしてください。getToolTipText()

ここでの注意事項は Windows 7 に適用されます。他のプラットフォームでは動作が異なる場合があります。

于 2016-06-29T13:25:55.227 に答える
1

あなたのスクリーンショットからははっきりとはわかりませんが、あなたが見ているのは実際には2つのツールのヒントではないと思います。

1つのツールチップ(カスタムのもの) が表示されています。

表示されているもう1つの「ポップアップ」は、「このテーブルセルは、完全なコンテンツを表示するのに十分な幅がないため、十分なスペースがある場合に表示される本格的なテキストを表示します。テーブル自体のすべての機能を表示します。

これが実際に望ましい動作であるという概念を提示します。ユーザーがセルの全内容を「覗き見」し続けることができるようにすると同時に、カスタムツールチップ(セルテキスト自体よりも追加/異なる情報を伝えると確信しています)を提供することで、ユーザーが望むすべてのものを提供します。

オーバーラップが気になる場合(そしてそれが不快であることに同意します)、オーバーライドすることでカスタムツールチップを少し邪魔にならないようにすくうことができますCellLabelProvider.getToolTipShift()

「セルが狭すぎる」ヘルパーポップアップを無効にしたい場合は、アドバイスがありません。しばらく突っついたのですが、どうやって抑えるのかわからなかった。そうすることさえできないかもしれません。

于 2013-01-14T23:08:32.803 に答える