0

これをなぞってください。

ここに示されているこの単純な MyCellRenderer の例を見てください...

class MyCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(
                    JTable table, Object value,
                    boolean isSelected, boolean hasFocus,
                    int row, int column) {
    JLabel c = (JLabel)super.getTableCellRendererComponent( // params from above );
    // This...
    c.setToolTipText("I don't want text, I want a custom JComponent here");
    return c;
}
}

ただし、単にスーパーのレンダリングされた JLabel にアクセスして単純なテキストのツールチップを追加する代わりに、その JLabel をオーバーライドし、JCustomToolTip ライブラリ http://prefuse.org/doc/api/prefuse/util/ui/を使用して完全にカスタムのツールチップを使用したいと考えています。 JCustomTooltip.html

...しかし、スーパーのレンダリングされた JLabel の元のプロパティをすべて維持したいと考えています。唯一の変更点は、JCustomToolTip が追加されたことです。

私はすべてを試しましたが、何もうまくいかないようです。JLabel を拡張して createToolTip() をオーバーライドし、その子 JLabel を (スーパー JLabel からすべてのプロパティをコピーして) テーブルに戻そうとしましたが、成功しませんでした。JTable はテキスト ツールチップのみを認識するようで、Nimbus は元の書式設定を表示していません。

私は何をしますか?

4

1 に答える 1

0

時間があれば、後で他の人が参照できるようにコードを変更します。しかし、Stack Overflow の別の場所で解決策を見つけました。私が疑ったように、JTable は JToolTip を異なる方法で実装します。JComponent セルではなく、JTable レベルで呼び出されるからです。

カスタム CellRenderer で createToolTip() をオーバーライドする

于 2014-03-09T22:30:31.830 に答える