Ich erzeuge eine Heatmap, mit Jtable und füllen sie mit Zahlen, dann mit Farben . Anstelle von Farben möchte ich die Kreise oder ein anderes graphisches Bild zeigen, das in der Größe relativ ist, wie dieses . Ich habe eine Bibliothek in R gefunden, geom_tile, konnte aber keine Möglichkeit finden, es in Javs zu machen. Habt ihr eine Idee oder ein Beispiel dafür, wie es geht?Wie zeichne Heatmap in Java, Kreise statt Farbe
Antwort
Um benutzerdefinierte Tabellenzellen zu zeichnen, müssen Sie eine eigene Implementierung von TableCellRenderer
bereitstellen.
Ihr benutzerdefinierter TableCellRenderer muss nur eine Methode implementieren: getTableCellRendererComponent
, die eine Component
oder JComponent
zurückgeben muss.
Ihr TableCellRenderer kann dann eine benutzerdefinierte JComponent zurückgeben, die den Kreis abhängig vom Zellwert zeichnet, der zuvor festgelegt wurde.
Im Folgenden ein demonstriert Beispielcode ist die benutzerdefinierte Einstellung HeatmapCellRenderer
, die ein DotRenderer
als Komponente verwendet eine einzelne Zelle zu machen:
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);
}
}
}
Der obige Code eine Tabelle ähnlich den folgenden Screenshot erzeugen soll:
Durch komplexere Objekte als nur eine Integer
für Ihre Zellen verwenden, können Sie komplexere rende implementieren rer. Wenn Sie beispielsweise eine einfache Datenklasse class MyData { int value1; int value2; }
haben und solche Werte in die Tabelle einfügen, können Sie einen Renderer implementieren, der die Hintergrundfarbe abhängig von und die Größe des Punkts basierend auf value2
des Zellenwerts festlegt. Wenn Sie der Klasse value3
hinzufügen, können Sie die Punkte basierend auf diesen Werten farblich abgrenzen und so Ihrem Beispielbild ziemlich nahe kommen.
- 1. iOS Zeichne gefüllte Kreise
- 2. Wie zeichne Kreise oder Linie in UrhoSharp
- 3. Javascript Canvas - Kreise ändern Farbe
- 4. Wie zeichne Kreise mit zufälligen Farben in OpenCV
- 5. Zeichne Zellgrenzen mit heatmap.2
- 6. Map Wert zu bestimmten Farbe in Seaborn Heatmap
- 7. Kalender Heatmap: Farbe nicht zugewiesen
- 8. Konzentrische Kreise mit Farben in Java
- 9. wie andere Farbe innerhalb einer Heatmap
- 10. Wie zeichne ich eine Sammlung von Punkten als separate Kreise?
- 11. JavaFX8 - Wie zeichne zufällige Kreise mit zufälligen x/y Zentren?
- 12. Random Kreise Applet Java
- 13. Kann die Farbe der Kreise nicht ändern
- 14. Wie wird die Farbe der Zeilenlegende in der Heatmap umgekehrt?
- 15. Highcharts Heatmap Zuglinie ng statt Boxen
- 16. Zeichne Kreise und andere Formen mit SpriteKit Scene Editor?
- 17. Android: Zeichne zufällige Kreise auf dem Bildschirm bei Berührung
- 18. Verwenden von diskreten benutzerdefinierten Farbe in einer Plotly Heatmap
- 19. Wie zeichne ich einen Zeiger in Java?
- 20. Wie zeichne ich Absturzprotokolle in Java auf?
- 21. Wie zeichne Graph in Java Script?
- 22. Java: Wie zeichne ich eine Leinwand?
- 23. Wie zeichne eine Linie mit Farbe in glänzenden Anwendung
- 24. Detecting Hough Kreise JAVA OpenCV
- 25. Wie zeichne ich ein Diagramm in Java mit Adjazenzmatrix
- 26. Wie zeichne ich einen Kreis mit einer bestimmten Farbe in XNA?
- 27. Wie zu zeichnen Kreise libgdx
- 28. Zeichne Gaußsche Kurve in Java
- 29. Pass Ganzzahl statt Ressource Farbe
- 30. R: Zeichne ein Polygon mit bedingter Farbe
https://stackoverflow.com/questions/4941372/how-to-insert-image-into-jtable-cell – assylias