如何在java中以二维matrix的forms表示double值
所以我想写一个matrix浏览器,使我能够重新排列matrix的行和列。 对于这个厕所我使用了Jtable类。 现在我遇到的问题是通过查看double值来重新排列matrix非常困难,所以我想打印matrix不是用double值,而是用圆圈半径代表值的圆圈打印。 这样我就可以更快地分辨大值和小值之间的区别。
任何人有任何想法如何我可以把这个双重值变成实心圆与JTable或任何表类为这件事?
下面是一个自定义渲染器的例子,它实现了graphics界面来完成绘图。 这种方法可以更容易地控制文本和图标的相对位置。 请注意,呈现器基于区间[0, 1)
中归一化值的假设进行缩放; 您可能想要查询您的数据模型的最小值和最大值。
class DecRenderer extends DefaultTableCellRenderer implements Icon { private static final int SIZE = 32; private static final int HALF = SIZE / 2; DecimalFormat df; public DecRenderer(DecimalFormat df) { this.df = df; this.setIcon(this); this.setHorizontalAlignment(JLabel.RIGHT); this.setBackground(Color.lightGray); } @Override protected void setValue(Object value) { setText((value == null) ? "" : df.format(value)); } @Override public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.blue); double v = Double.valueOf(this.getText()); int d = (int)(v * SIZE); int r = d / 2; g2d.fillOval(x + HALF - r, y + HALF - r, d, d); } @Override public int getIconWidth() { return SIZE; } @Override public int getIconHeight() { return SIZE; } }
您将不得不编写自定义单元格渲染器 。
该组件将被用作橡皮图章; 每个单元格都调用paint
方法。
在绘画方法中绘制圆形;
g.fillOval(x - radius / 2, y - radius / 2, radius, radius);
(x,y)
处绘制一个radius
为圆心的radius
。