[英]Right to left (backwards) JProgressBar
我的應用程序需要顯示值為-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);
}
使用JFreeChart
或子類化JProgressBar
似乎paintTrack()
矯枉過正,但是在BasicSliderUI
覆蓋paintTrack()
可能會有效。 這是一個例子 。
前幾天我看了一下JFreeChart,你想做什么看起來像是完全矯枉過正。
由於這似乎很容易在程序上繪制,我只是創建一個擴展JComponent的類,重寫paint方法以在其中繪制rect,並將其添加為自定義小部件。
交換背景和前景色,回歸看起來像左邊的進度。
以下代碼完成工作:
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.