私は各行が画像を表すテーブルを持っています。列Pathには絶対パスが格納されています。文字列がちょっと長いので、特定のセルの上にマウスを置くと、セルの情報を含むマウスの横にツールチップがポップアップするはずです。jtableのセルにツールチップを追加するには?
答えて
パスにはCellRenderer
というカスタムを書きませんでしたが、そのままDefaultTableCellRenderer
を使用しているとします。 DefaultTableCellRenderer
をサブクラス化し、getTableCellRendererComponent
にツールチップを設定する必要があります。次に、その列のレンダラーを設定します。
class PathCellRenderer 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...
String pathValue = <getYourPathValue>; // Could be value.toString()
c.setToolTipText(pathValue);
// ...OR this probably works in your case:
c.setToolTipText(c.getText());
return c;
}
}
...
pathColumn.setCellRenderer(new PathCellRenderer()); // If your path is of specific class (e.g. java.io.File) you could set the renderer for that type
...
セルに絶対パスを格納するとします。 絶対パス文字列には、おそらくJLabel
を使用しています。ツールチップの内容を表現するためのHTMLタグを使用し、あなたのセルにラベルを持っていると仮定します。あなたはJLabelの以外のものを使用している場合
JLabel label = new JLabel("Bla bla");
label.setToolTipText("<html><p>information about cell</p></html>");
setToolTipText()
は、他のいくつかのSwingコンポーネントのために使用することができます。
deffinetly nope ... –
*「deffinetly nope」* @deporterがそのコメントを理解しているのだろうかと思います。私は確かにしません。 :( –
ちょっと正確にしてください:_あなたのcell_のラベルが誤解を招く可能性があります(セル内にコンポーネントは存在してはいけません)代わりにレンダラーによって提供されるラベルです。 ) – kleopatra
ただ、JTableのオブジェクトの作成しながら、コードの下に使用します。
JTable auditTable = new JTable(){
//Implement table cell tool tips.
public String getToolTipText(MouseEvent e) {
String tip = null;
java.awt.Point p = e.getPoint();
int rowIndex = rowAtPoint(p);
int colIndex = columnAtPoint(p);
try {
tip = getValueAt(rowIndex, colIndex).toString();
} catch (RuntimeException e1) {
//catch null pointer exception if mouse is over an empty line
}
return tip;
}
};
実際、私はそれが受け入れられた解決策よりも効率的だと思います。 –
一部の列に基づいてテーブルを並べ替えると、これが機能しないことがあります。 –
'getRowSorter()。convertRowIndexToModel(rowIndex)'と 'getRowSorter()。convertRowIndexToModel(rowIndex)'を使用して、モデルから正確な行を取得します。 –
- 1. jtableセル内にスピナーを追加する
- 2. JTable内にBETWEENセルを追加する
- 3. どのように私は、JTableの行の(Javaのスイング)にツールチップを追加する方法のJTableの行
- 4. JTableはセルに2つのミニボタンを追加します
- 5. JTableセルにドロップダウンメニューを追加する方法
- 6. JPanelにJTableを追加するには
- 7. データグリッドセルにツールチップを追加するには
- 8. SVGのツールチップを追加するには?
- 9. SWTグループにJtableを追加
- 10. jfreechartのスタックバーにツールチップを追加する
- 11. jtableにボタンを追加する
- 12. JTable列にJScrollPaneコンポーネントを追加する
- 13. JTableにarraylistデータを追加する
- 14. JTableにタイトルを追加する
- 15. ツールチップをd3エリアチャートに追加
- 16. FlyoutMenuにツールチップを追加
- 17. 凡例をツールチップに追加
- 18. デフォルトのhighchartsツールチップに追加
- 19. jtableに画像の隣にテキストを追加するには?
- 20. フォントにツールチップを追加するawesome icon
- 21. 入力ボックスにツールチップを追加する
- 22. JTextPaneにツールチップを追加する
- 23. Bokeh - パッチにツールチップを追加する
- 24. Googleスプレッドシートにツールチップを追加する
- 25. D3ツールチップ内にドーナツチャートを追加する
- 26. EXTJSボタンにツールチップを追加する
- 27. jqgridにツールチップを追加する方法
- 28. オーバーフローでdivにツールチップを追加する
- 29. JTableの行間に行を追加するには?
- 30. システムコマンドの結果をjtableに追加するには?
super.getTableCellRendererComponentを呼び出すことはできません。 – codenamezero
@コード名ゼロなぜいけないのですか?サンプルコードでは、メソッドを非抽象的に持つ 'DefaultTableCellRenderer'をサブクラス化し、それ自体が' JLabel'ですか? –