各位达人帮帮忙,小弟最近做一个JAVA程序,要在一个JPanel里面画图,因为图太大需要添加滚动条,于是就将这个JPanel添加到JScrollPane中,不知为何无法实现滚动条的效果。
另:因为JScrollPane不好用,所以我尝试过使用JViewPort,虽然可以实现滚动,但是拖影情况非常严重,就是移动的时候,之前位置的图片会残留在屏幕中,哪位达人有空能否帮忙解答下,小弟感激不尽一个简单的示例如下:import java.awt.*;import javax.swing.*;class DrawPanel extends JPanel{
public DrawPanel() {
setPreferredSize(new Dimension(200,200));
} public void paint(Graphics g){
g.setColor(Color.BLACK);
g.drawOval(100, 100, 1800, 800);
}
}public class MyFrame extends JFrame{
public static void main(String[] args){
MyFrame demo = new MyFrame();
DrawPanel drawPanel = new DrawPanel();
JScrollPane scrollPane = new JScrollPane(drawPanel);
scrollPane.setSize(500,768);
demo.getContentPane().add(scrollPane,BorderLayout.CENTER);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
demo.setSize(new Dimension(800,600));
demo.setVisible(true);
}
}
这个例子虽然不是我做的,但是这个例子中画的圆已经超过边界了,滚动条也是不动的,求达人解答
另:因为JScrollPane不好用,所以我尝试过使用JViewPort,虽然可以实现滚动,但是拖影情况非常严重,就是移动的时候,之前位置的图片会残留在屏幕中,哪位达人有空能否帮忙解答下,小弟感激不尽一个简单的示例如下:import java.awt.*;import javax.swing.*;class DrawPanel extends JPanel{
public DrawPanel() {
setPreferredSize(new Dimension(200,200));
} public void paint(Graphics g){
g.setColor(Color.BLACK);
g.drawOval(100, 100, 1800, 800);
}
}public class MyFrame extends JFrame{
public static void main(String[] args){
MyFrame demo = new MyFrame();
DrawPanel drawPanel = new DrawPanel();
JScrollPane scrollPane = new JScrollPane(drawPanel);
scrollPane.setSize(500,768);
demo.getContentPane().add(scrollPane,BorderLayout.CENTER);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
demo.setSize(new Dimension(800,600));
demo.setVisible(true);
}
}
这个例子虽然不是我做的,但是这个例子中画的圆已经超过边界了,滚动条也是不动的,求达人解答
2楼说的有道理,paint不会自己使绘图区变大,需要自己计算绘图区的大小。
如果事先知道绘图区有多大,可以先设定JSrollPane的大小然后再设定绘图区的大小,这样滚动条就出来了。