ヒートマップを生成し、Jtableを使用して番号をつけ、次に色で塗りつぶします。 。色の代わりに、この円のような大きさの相対的なグラフィック画像を表示するには、のようにします。 Rで1つのライブラリgeom_tileが見つかりましたが、Javsでそれを行う方法が見つかりませんでした。皆さんはどんなアイデアを持っていますか、それを行う方法の例はありますか?Javaでヒートマップを描画する方法、色の代わりに円を表示する方法
0
A
答えて
1
カスタムテーブルセルを描画するには、TableCellRenderer
の独自の実装を提供する必要があります。
カスタムTableCellRendererは、Component
またはJComponent
を返す必要がある1つのメソッド(getTableCellRendererComponent
)のみを実装する必要があります。
TableCellRendererは、あらかじめ設定されているセルの値に応じて円を塗りつぶすカスタムJComponentを返すことができます。
以下では1つのセルをレンダリングするコンポーネントとしてDotRenderer
を使用してカスタムHeatmapCellRenderer
を設定示すサンプルコードがある:
public class TableHeatmap {
public static void main(String[] args) {
JFrame frame = new JFrame();
// create a demo table 10 x 10 cells
JTable table = new JTable(10, 10);
frame.setContentPane(table);
// fill in some random data
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 10; col++) {
table.setValueAt((int) (Math.random() * 10), row, col);
}
}
// set our custom TableCellRenderer
table.setDefaultRenderer(Object.class, new HeatmapCellRenderer());
table.setRowHeight(30);
// show the window
frame.pack();
frame.setVisible(true);
}
private static class HeatmapCellRenderer implements TableCellRenderer {
private final DotRenderer renderer = new DotRenderer();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (value instanceof Integer) {
this.renderer.setValue((Integer) value);
return this.renderer;
}
return null;
}
}
private static class DotRenderer extends JComponent {
private int value;
public void setValue(int value) {
this.value = value;
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.RED);
int centerX = this.getWidth()/2;
int centerY = this.getHeight()/2;
g.fillOval(centerX - this.value, centerY - this.value, this.value * 2, this.value * 2);
}
}
}
上記のコードは、次のスクリーンショットのようにテーブルを生成する必要があります。
あなたの細胞のためのちょうどInteger
よりも、より複雑なオブジェクトを使用することにより、あなたは、より複雑な仁徳を実装することができリル。たとえば、単純なデータクラスclass MyData { int value1; int value2; }
があり、そのような値をテーブルに挿入する場合は、value1
に依存する背景色と、セル値のvalue2
に基づいてドットのサイズを設定するレンダラーを実装できます。クラスにvalue3
を追加することで、これらの値に基づいてドットを着色することが可能になり、サンプル画像にかなり近づきます。
関連する問題
- 1. CGContextDrawRadialGradientを真円形の代わりに楕円形で描画する方法はありますか?
- 2. Eclipseクラスファイルの代わりにJavaファイルを表示する方法
- 3. Pythonで矩形内に円形のヒートマップを描画する方法
- 4. キャンバスの代わりにバックスクリーンビットマップに描画する方法
- 5. ビットマップに円を描かないで描画する方法は?
- 6. Swift 3でSCNSphereの代わりに画像を表示する方法は?
- 7. テキストの代わりにドロップダウンボックス内に画像を表示する方法
- 8. 「Object」の代わりにコンストラクタ名を表示する方法は?
- 9. フルデバイス名の代わりにネットワークアダプタ名を表示する方法
- 10. SkiaSharp:画像に示すように円弧を描く方法
- 11. www.domain.com/somethingの代わりにアドレスバーwww.domain.comに表示する方法
- 12. Leaflet.heatを使用してヒートマップを再描画する方法は?
- 13. OpenGLで円の代わりに楕円が描かれる
- 14. ユーザ名の代わりに表示名を表示する方法#
- 15. Androidでの表示にBitmapを描画する方法
- 16. ggplotで2つの半円を描画する方法
- 17. HTML5キャンバスで円形のカラーピッカーを描画する方法
- 18. 同じパネルに複数の楕円を描画する方法
- 19. VC++でCxImageを使用して円を描画する方法
- 20. 描画可能な色をint色にする方法
- 21. 円の代わりにアンドロイドアプリで四角形のジェネレートを作成する方法
- 22. 表示ビューでパッチの代わりにフォームにアクションを作成する方法
- 23. Androidで3D円グラフを描画する方法
- 24. 円弧を3点で描画する方法
- 25. executorThreadsPoolの代わりにjavaパラレルストリームを使用する方法は?
- 26. 2次元平面上に円を描画する方法
- 27. 円の代わりに、intの代わりにdouble値で配置する方法は?
- 28. イントロスライダーのレイアウトで画像の代わりに画像を直接表示する方法
- 29. htmlを実行する代わりにページに表示する方法は?
- 30. マゼンタで「$」の代わりに通貨記号「AED」を表示する方法1.9
https://stackoverflow.com/questions/4941372/how-to-insert-image-into-jtable-cell – assylias