各位达人帮帮忙,小弟最近做一个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);
  
  
 }
 

这个例子虽然不是我做的,但是这个例子中画的圆已经超过边界了,滚动条也是不动的,求达人解答

解决方案 »

  1.   

    paint是不会理会工作区大小的.可以自己判断实际画布大小,然后修改panel尺寸.应该能行,没试过.
      

  2.   

    想了想还是自己解决了这个问题:
    2楼说的有道理,paint不会自己使绘图区变大,需要自己计算绘图区的大小。
    如果事先知道绘图区有多大,可以先设定JSrollPane的大小然后再设定绘图区的大小,这样滚动条就出来了。