2010-10-28 62 views
0

当鼠标出现在旋钮图像上时,我需要将图像放在jslider的旋钮图像上。当鼠标出现在旋钮图像上时,如何将图像放在jslider的旋钮图像上

我做了这样的事情。:

slider = new Slider(); 

    s= new mySliderUI(slider ,"slider.png"); 

    slider.setUI(s); 
    slider.addMouseListener(new MyMouseAction()); 



public class MyMouseAction implements MouseListener{ 
    public void mouseEntered(MouseEvent e) { 
          try { 
        s.knobImage = ImageIO.read(new File("slider_roll.png")); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

     } 

     public void mouseExited(MouseEvent e) { 
          try { 
        s.knobImage = ImageIO.read(new File("slider.png")); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

     } 

} 

private class mySliderUI extends BasicSliderUI { 

     Image knobImage; 


     public mySliderUI(JSlider aSlider, String fileName) { 

      super(aSlider); 

      aSlider.setPaintTrack(false); 
      aSlider.setBorder(null); 
      try { 
       this.knobImage = ImageIO.read(new File(fileName)); 

      } catch (IOException e) { 

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

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

     } 

    } 

上面的代码无法正常工作。请告诉我如何做到这一点。

感谢 乔蒂

+0

好的。我将来会确保这一点。 – Jyoti 2010-10-29 04:35:20

回答

1

既然你似乎不接受的答案,因为你没有张贴SSCCE又一次,我不会花太多的时间猜测你在做什么。

我唯一的建议是更改图像后需要使用slider.repaint()。你也不应该每次都读图像。图像应该被缓存。

+0

我提出了一个建议。我再说一遍,你还没有发布一个SSCCE来展示你如何使用我的建议。我不会为你编写代码,因为我不知道我的头顶是什么确切的代码。但是,如果您向我们展示您尝试过的内容,那么我们可能会提供一些帮助,或者我们可能能够调试代码,但只有在发布SSCCE时才可以。 – camickr 2010-10-29 05:30:26

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – Zyerah 2015-04-09 17:50:06

+0

@Emrakul,我提出了一个建议。然而,正如我在答复中所说的,由于缺乏海报信息,我的努力并不是一个很大的努力,因为OP没有多少努力去问一个合理的问题。我还就如何更好地提出问题添加了意见,以便我们掌握所有需要的信息以提供更好的答案,否则我们可以建议的是明显的。回答几千个问题之后,我想我得到了一般想法。 – camickr 2015-04-09 18:32:43