基于刻度值的彩色java JSlider

基于刻度值的彩色java JSlider,java,swing,colors,jslider,Java,Swing,Colors,Jslider,我想要一个JSlider,它有三种颜色,每种颜色占据一个值范围(例如,1到10是绿色,10到20是黄色,20到30是红色),如何实现这一点?编辑: 哎呀,出于某种原因,我认为JComponent中有一个paintBackground()方法。我想您应该改为执行setOpaque(false)(这样super就不会绘制背景),然后像这样重写paintComponent(): protected void paintComponent(Graphics g) { int w = getWidt

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

编辑:

哎呀,出于某种原因,我认为JComponent中有一个
paintBackground()
方法。我想您应该改为执行
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();
}

您希望背景有三条颜色条纹吗?或者你想根据所选的值将其着色为三种颜色中的一种?@Russell Zahniser:我希望背景有三条颜色条纹,我如何使GradientPaint对背景JPanel这样做