1

我想要一个具有三种颜色的 JSlider,每种颜色都占据一个值范围(例如,1 到 10 是绿色,10 到 20 是黄色,20 到 30 是红色),如何实现?

4

1 回答 1

2

编辑:

糟糕,出于某种原因,我认为paintBackground()JComponent 中有一个方法。我想您必须这样做setOpaque(false)(这样super就不会绘制背景),然后paintComponent()像这样覆盖:

protected void paintComponent(Graphics g) {
   int w = getWidth();
   int h = getHeight();
   int x1 = w / 3;
   int x2 = w * 2 / 3;

   g.setColor(Color.GREEN);
   g.fillRect(0, 0, x1, h)
   g.setColor(Color.YELLOW);
   g.fillRect(x1, 0, x2 - x1, h)
   g.setColor(Color.RED);
   g.fillRect(x2, 0, w - x2, h)

   super.paintComponent();
}
于 2012-04-30T21:13:22.460 回答