Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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 图像为JScrollBar_Java_Swing_Jscrollbar - Fatal编程技术网

Java 图像为JScrollBar

Java 图像为JScrollBar,java,swing,jscrollbar,Java,Swing,Jscrollbar,我正在使用像素艺术编辑器,我在使用JScrollBar时遇到了一些问题 问题是: 我在我的滚动条轨迹上渲染了一个图像,但它每次都会拉伸,所以我必须绘制30多个单独的滚动条轨迹图像,我想知道是否有可能只创建一个图像并使其自身大小正确 package oktay.notepad.GUI; import oktay.notepad.ColorSheme; import oktay.notepad.Main; import javax.imageio.ImageIO; import javax.sw

我正在使用像素艺术编辑器,我在使用
JScrollBar
时遇到了一些问题

问题是:

我在我的滚动条轨迹上渲染了一个图像,但它每次都会拉伸,所以我必须绘制30多个单独的滚动条轨迹图像,我想知道是否有可能只创建一个图像并使其自身大小正确

package oktay.notepad.GUI;

import oktay.notepad.ColorSheme;
import oktay.notepad.Main;

import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.plaf.basic.BasicScrollBarUI;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

/**
 * Created by asame on 08.06.2017.
 */
public class UIScrollBar extends BasicScrollBarUI implements MouseListener {

   public UIScrollBar() {

   }

   @Override
   protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
       try {

           g.drawImage(ImageIO.read(ClassLoader.getSystemResource("res/icons/scrolltrack.pn   g")), trackBounds.x, trackBounds.y, trackBounds.width, trackBounds.height, null);

       } catch (IOException e) {
        e.printStackTrace();
       }
   }

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

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }

}
----------------------自定义滚动条类----------------------------

package oktay.notepad.GUI;

import javax.swing.*;

/**
 * Created by asame on 21.06.2017.
 */
public class CustomScrollBar extends JScrollBar {

    public CustomScrollBar() {
        setUI(new UIScrollBar());
    }

}
package oktay.notepad.GUI;

import javax.swing.*;
import java.awt.*;

/**
 * Created by asame on 21.06.2017.
 */
public class CustomScrollPane extends JScrollPane {

    public CustomScrollPane () {
        super (VERTICAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_ALWAYS);
        //setUI(new UIScrollPane());
        setHorizontalScrollBar(new CustomScrollBar());
        setVerticalScrollBar(new CustomScrollBar());
    }
}
----------------------自定义滚动窗格类--------------------------

package oktay.notepad.GUI;

import javax.swing.*;

/**
 * Created by asame on 21.06.2017.
 */
public class CustomScrollBar extends JScrollBar {

    public CustomScrollBar() {
        setUI(new UIScrollBar());
    }

}
package oktay.notepad.GUI;

import javax.swing.*;
import java.awt.*;

/**
 * Created by asame on 21.06.2017.
 */
public class CustomScrollPane extends JScrollPane {

    public CustomScrollPane () {
        super (VERTICAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_ALWAYS);
        //setUI(new UIScrollPane());
        setHorizontalScrollBar(new CustomScrollBar());
        setVerticalScrollBar(new CustomScrollBar());
    }
}

感谢您的帮助

您可以使用
纹理绘制
,如下所示:

BufferedImage bi = ImageIO.read(ClassLoader.getSystemResource("res/icons/scrolltrack.png"));
TexturePaint paint = new TexturePaint(bi, new Rectangle(0, 0, bi.getWidth(), bi.getHeight()));
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(paint);
g2.fill(new Rectangle(trackBounds.x, trackBounds.y, trackBounds.width, trackBounds.height));

1) 为了更快地获得更好的帮助,请发布一个or。2) 例如,获取图像的一种方法是热链接到中看到的图像。3) “问题是:我在滚动条轨迹上渲染图像,但每次都会拉伸,因此我必须绘制30多个单独的滚动条轨迹图像。”这是个什么问题?只要使用一个循环,谢谢你的代码。我试过了,但没有达到我的要求。这是一个截图,你可以看到我的意思。