我写了个关于JScrollPane滚动窗口的程序,其它都实现好了.但是有个问题,就是窗口大小变大时,滚动窗口的视口一直停留在原来的界面,没有跟着滚动窗口变大而往右或者往下移动(滚动条已经出现),怎么解决这个问题???

解决方案 »

  1.   

    好像以J开头的控件组,都不大好使…
    不关是JButton,JText。楼主换个控件包吧
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;public class Test {
        JFrame frame;
        JSlider slider;
        JScrollPane jsp;
        JPanel pan;
        public Test(){
            frame=new JFrame();
            Container contentPane=frame.getContentPane();
            pan=new JPanel();
            pan.setPreferredSize(new Dimension(300,300));
            jsp=new JScrollPane(pan);
            contentPane.add(jsp);
            slider=new JSlider();
            slider.setMinimum(0);
            slider.setMaximum(400);
            slider.setValue(0);
            slider.setPaintLabels(true);
            slider.setPaintTicks(true);
            slider.setPaintTrack(true);
            slider.setMajorTickSpacing(40);
            slider.addChangeListener(new ChangeListener() {
                public void stateChanged(ChangeEvent e) {
                    int value=slider.getValue();
                    pan.setPreferredSize(new Dimension(300+value,300+value));
                    jsp.setViewportView(pan);
                    //自己设置JScrollPane的两个滚动条的值
                    jsp.getHorizontalScrollBar().setValue(jsp.getHorizontalScrollBar().getMaximum());
                    jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMaximum());
                }
            });
            contentPane.add(slider,BorderLayout.SOUTH);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
        public static void main(String[] args) {
            new Test();
        }
    }