我继承jpanel生成了一个面板类,在面板中,我重载了paint()方法,在面板中画出我想要的图形。在没有把面板加到jscrollpane中之前,我可以用键盘上的向上,向下键来移动面板上的图形。而在加上jscrollpane后,我移动面板上的图形,滚动条也会跟着移动,这该怎么办,我只想移动面板上的图形。代码如下:
   public class editPane extends JPanel{
     public void paint(Graphics g){
      .....//画出图形
     }
     public boolean isFocusTraversable(){ return true;}  //让面板可以接受焦点
   }
   .....
   editPane ep = new editPane();
   JScrollPane js = new JScrollPane(ep);

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.KeyAdapter;import javax.swing.*;public class KeyListenerTest {
        public static void main(String[] args) {
            JPanel p = new JPanel();
            p.setBackground(Color.white);
            p.addKeyListener(new KeyAdapter() {
                public void keyPressed(java.awt.event.KeyEvent e) {
                    System.out.println(e);
                    e.consume(); //***//
                }
                public void keyReleased(java.awt.event.KeyEvent e) {
                    System.out.println(e);
                    e.consume(); //***//
                }
            });
            p.setFocusable(true);
            p.setPreferredSize(new Dimension(500, 500));
            JScrollPane sp = new JScrollPane(p);        JFrame f = new JFrame();
            f.getContentPane().add(sp, BorderLayout.CENTER);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(300, 300);
            f.setLocationRelativeTo(null);
            f.show();
        }
    }
      

  2.   

    厉害啊,我刚运行上面的程序,运行的结果跟我的代码的运行结果不同,但是怎么都找不出是哪里的原因,我还以为是我的其他的程序没写好,找了好久,才无意发现。原来问题就出在键盘监听器上,我写的keypressed(keyevent e)的方法里,没有销毁掉这个键盘事件,所以就传到jscrollpane里面去了。