我的应用程序需要显示从-1到1范围内的值的图形表示。负值应为一种颜色,正值应为另一种颜色。零在中间,什么也不显示。 (如果有帮助,此处的特殊用法是显示金融应用程序中买卖订单的相对权重。)

理想情况下,我想使用一对JProgressBars,但是Swing控件(至少在其左侧)开始。标准控件仅支持两个方向,即左右或底部。传递负值没有帮助。我的问题是,达到这种效果的最快方法是什么?

子类化JProgressBar将涉及几乎完全重新实现它。对于一个相对琐碎的任务,使用JFreeChart条形图似乎需要大量代码(和工作量)。我也许可以制作一个小的方形单元格的JTable并填写它,但这又是很多代码。你有什么建议?

最佳答案

嗯,也许这根本行不通,但是如何制作一个JProgressBar的子类并将paintComponent()覆盖为这样的东西:

@Override
protected void paintComponent(Graphics g) {
  Graphics2D g2d = (Graphics2D) g;
  g2d.rotate(Math.PI);
  super.paintComponent(g2d);
}

如果我更清醒和清醒,我会进行测试。

编辑:
虽然旋转它可能也可以工作,但我发现缩放它然后进行翻译更容易,如下所示:
@Override
protected void paintComponent(Graphics g) {
  Graphics2D g2d = (Graphics2D) g;
  g2d.scale(-1, 1); //Flips over y-axis
  g2d.translate(-getWidth(), 0); //Moves back to old position.
  super.paintComponent(g2d);
}

09-10 12:29
查看更多