簡體   English   中英

從右到左(向后)JProgressBar

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM