我的应用程序需要显示一个从-1到1的值的图形表示。负值应该用一种颜色,正值用另一种颜色。零在中间,什么也不显示。(如果有帮助的话,这里的特殊用途是显示金融应用程序中买入和卖出订单的相对权重。)
我最好使用一对JProgressBars来实现这一点,但是Swing控件(最小)从左边开始。标准控件只支持两个方向,即左-右或下-上。传入负值没有帮助。我的问题是,实现这种效果的最快方法是什么?
对JProgressBar进行子类化将涉及到几乎完全重新实现它。对于一个相对琐碎的任务,使用JFreeChart条形图似乎需要大量的代码(和工作)。我也许可以创建一个小的、方单元格的JTable并填充它,但这也需要大量的代码。您有什么建议?
6条答案
按热度按时间b4lqfgs41#
嗯,也许这根本不起作用,但如何创建JProgressBar的子类并将
paintComponent()
覆盖为如下内容:如果我清醒一点我会测试的。
编辑:虽然旋转它也可以工作,但我发现缩放它然后平移它更容易,如下所示:
hujrc8aj2#
使用
JFreeChart
或子类化JProgressBar
看起来有些矫枉过正,但是在BasicSliderUI
中覆盖paintTrack()
可能是有效的。ep6jt1vc3#
前几天我看了一下JFreeChart,对于你想做的事情,它看起来完全是矫枉过正。
由于这看起来像是很容易按程序绘制,所以我只需要创建一个扩展JComponent的类,覆盖paint方法在其中绘制一个矩形,然后将其添加为一个自定义部件。
tuwxkamq4#
下面的代码可以完成这项工作:
icomxhvb5#
交换背景色和前景色,回归看起来就像是向左前进。
ffx8fchx6#
我尝试了上面接受的解决方案,但它没有解决我的用例。我需要进度条是垂直的,进度从顶部到底部,并在进度条中以字符串的形式显示值,在正确的可读方向。如果字符串值不需要显示,旋转进度条也可以工作。:-(
所以,经过大量的研究,我决定如下。
延长
并重写
方法中。
保持一切与父 * 相同,除了 * 在垂直的情况下改变这个小片段。
原始版本
已修改
这正好解决了我的用例;从上到下,以一个可读的方向显示字符串值。2也许这篇文章会帮助其他人,或者至少为他们指明一个方向。
祝你好运,丹尼尔