gpt4 book ai didi

java - 如何将 JScrollbar 的 Thumb 更改为自定义图像

转载 作者:行者123 更新时间:2023-11-29 09:15:39 24 4
gpt4 key购买 nike

假设我在 Image() 中有一个适当大小的图像我想将 JScrollBar 组件的 Thumb 或 Knob 更改为这个图像。

我知道我需要子类化 ScrollBarUI

这是我现在所在的位置。

public class aScrollBar extends JScrollBar {

public aScrollBar(Image img) {
super();
this.setUI(new ScrollBarCustomUI(img));
}

public class ScrollBarCustomUI extends BasicScrollBarUI {

private final Image image;

public ScrollBarCustomUI(Image img) {
this.image = img;
}

@Override
protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {
Graphics2D g2g = (Graphics2D) g;
g2g.dispose();
g2g.drawImage(image, 0, 0, null);
super.paintThumb(g2g, c, thumbBounds);
}

@Override
protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
super.paintTrack(g, c, trackBounds);
}


@Override
protected void setThumbBounds(int x, int y, int width, int height) {
super.setThumbBounds(0, 0, 0, 0);
}


@Override
protected Dimension getMinimumThumbSize() {
return new Dimension(0, 0);
}

@Override
protected Dimension getMaximumThumbSize() {
return new Dimension(0, 0);
}
}
}

现在我没有看到任何 Thumb,当我尝试在 ScrollBar 周围单击时只有一个 Track。

我 checkout this文章,看到人们推荐你阅读 this但他在任何地方都没有提到图像,所以这就是我想出的。

希望有人能帮助我,谢谢!

最佳答案

问题是:

g2g.drawImage(image, 0, 0, null);

您必须使用当前拇指位置作为起始绘图点。我想肯定是thumbRect.x和thumbRect.y,所以:

g2g.drawImage(image, thumbRect.x, thumbRect.y, null); should work.

另外,我不确定你在paintThumb中调用了super-method。该行不会覆盖您的自定义内容吗?

并且:dispose 的调用应该被排除在外。

关于java - 如何将 JScrollbar 的 Thumb 更改为自定义图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com