Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除jSlider的边框_Java_Swing_Border_Jslider - Fatal编程技术网

Java 如何删除jSlider的边框

Java 如何删除jSlider的边框,java,swing,border,jslider,Java,Swing,Border,Jslider,我定制了一个jSlider,但遇到了一些小问题- 更改值后,在我的自定义jSlider上显示一个边框。对不起,我已经拍了照片,但我不允许张贴。非定制jSlider在单击后不会显示这样的边框 有没有一种方法我必须重写才能去掉这个边界?提前谢谢你 对不起我的英语!希望有人能帮助我! 这是我的自定义用户界面: public class RedGreenSliderUI extends BasicSliderUI{ Image knobImage ; private BasicS

我定制了一个jSlider,但遇到了一些小问题-

更改值后,在我的自定义jSlider上显示一个边框。对不起,我已经拍了照片,但我不允许张贴。非定制jSlider在单击后不会显示这样的边框

有没有一种方法我必须重写才能去掉这个边界?提前谢谢你

对不起我的英语!希望有人能帮助我! 这是我的自定义用户界面:

    public class RedGreenSliderUI extends BasicSliderUI{
    Image knobImage ;
    private BasicStroke stroke = new BasicStroke(1f, BasicStroke.CAP_ROUND, 
            BasicStroke.JOIN_ROUND, 0f, new float[]{1f, 2f}, 0f);
    private static final float[] fractions = {0.0f, 0.5f};   
  private static final Color[] fillColors = {   
   /* new Color(0x2687AE),*/ 
   /* new Color(0x1658AE)*/ 
      new Color(0xc8041b),
      new Color(0xc8041b)
  };   
  private static final Color[] backColors = {   
    new Color(0x04c814),   
    new Color(0x04c814)   
  };   

    private static final Paint hFillGradient = new LinearGradientPaint(0, 0, 0, 11,   
          fractions, fillColors, MultipleGradientPaint.CycleMethod.NO_CYCLE);   
  private static final Paint hBackGradient = new LinearGradientPaint(0, 0, 0, 11,   
          fractions, backColors, MultipleGradientPaint.CycleMethod.NO_CYCLE);   
  private static final Paint vFillGradient = new LinearGradientPaint(0, 0, 11, 0,   
          fractions, fillColors, MultipleGradientPaint.CycleMethod.NO_CYCLE);   
  private static final Paint vBackGradient = new LinearGradientPaint(0, 0, 11, 0,   
          fractions, backColors, MultipleGradientPaint.CycleMethod.NO_CYCLE);   
  private static final Stroke roundEndStroke = new BasicStroke(5,   
          BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);   

        public RedGreenSliderUI( JSlider aSlider ) {

            super( aSlider );

            try {

                this.knobImage = ImageIO.read(getClass().getResource("ringelblumensalbe-             Updater-Grafiken/tongThumb01.png")); //.getClassLoader()


            } catch ( IOException e ) {

                e.printStackTrace();
            }
        }
        public void paintThumb(Graphics g)  {        

            g.drawImage( this.knobImage, thumbRect.x, thumbRect.y, 15, 30, null );

        }
         @Override
    protected Dimension getThumbSize() {
        return new Dimension(15, 30);
    }

         @Override
    protected Color getHighlightColor() {
             return new Color(98, 94, 0);
         }

          public void paintTrack(Graphics g) {   
    Graphics2D g2 = (Graphics2D) g;   
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,           RenderingHints.VALUE_ANTIALIAS_ON);   

    if (slider.getOrientation() == JSlider.HORIZONTAL) {   
      int cy = (trackRect.height / 2) - 2;   
      g.translate(trackRect.x, trackRect.y + cy);   

      g2.setStroke(roundEndStroke);   
      g2.setPaint(hBackGradient);   
      g2.drawLine(thumbRect.x, 2, trackRect.width, 2);   
      g2.setPaint(hFillGradient);   
      g2.drawLine(0, 2, thumbRect.x, 2);   

      g.translate(-trackRect.x, -(trackRect.y + cy));   
    } else {   
      int cx = (trackRect.width / 2) - 2;   
      g.translate(trackRect.x + cx, trackRect.y);   

      g2.setStroke(roundEndStroke);   
      g2.setPaint(vBackGradient);   
      g2.drawLine(2, 0, 2, thumbRect.y);   
      g2.setPaint(vFillGradient);   
      g2.drawLine(2, thumbRect.y, 2, trackRect.height);   

      g.translate(-(trackRect.x + cx), -trackRect.y);   
    }   
  }  
编辑:我知道了。答案是重写getFocusColor()


您可以尝试使用边框:0px;显示边框的特定类的属性。

焦点矩形由滑块的UI委托呈现,通常基于
BasicSliderUI
。虽然我不能主张击败焦点指示器,但您可以尝试以下方法之一:

  • 使用
    UIManager
    设置
    “Slider.focus”
    颜色以匹配
    “Slider.background”

  • 重写
    paintFocus()
    方法以不执行任何操作;我们可以看到一个相关的例子


垃圾上帝的回答很好。对于noob和我一样,语法是

UIManager.put("Slider.focus", UIManager.get("Slider.background"));

边框仅在单击jSlider时显示,由小点组成的线条。。。看起来像是在浏览器中单击链接后出现的边框。有趣的是,这些小点是使用
BasicGraphicsUtils.drawDashedRect()
绘制的。作者@Mikle GarinI知道你写这个答案已经有一段时间了,但是覆盖paintFocus()对我来说是个好办法。
UIManager.put("Slider.focus", UIManager.get("Slider.background"));