I am working on a pixel art editor and I am having some problems with the JScrollBar
.
The problem is:
I render a image on my scroll bar track but it stretches every time so I have to draw over 30 individual scroll bar track images and I was wondering if it's possible to just create one image and having it be in the right size itself.
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) {
}
}
----------------------CustomScrollBar Class----------------------------
package oktay.notepad.GUI;
import javax.swing.*;
/**
* Created by asame on 21.06.2017.
*/
public class CustomScrollBar extends JScrollBar {
public CustomScrollBar() {
setUI(new UIScrollBar());
}
}
----------------------CustomScrollPane Class--------------------------
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());
}
}
Thanks for the help