当前位置: 代码迷 >> J2SE >> 帮帮忙! 如何给JPanel 加下 JScrollPane!
  详细解决方案

帮帮忙! 如何给JPanel 加下 JScrollPane!

热度:10022   发布时间:2013-02-25 00:00:00.0
帮帮忙! 怎么给JPanel 加上 JScrollPane!!!!
Java code
public class test extends JFrame{    private static final long serialVersionUID = 5699328341463955028L;    private JScrollPane jsp = null;    private JPanel jp = null;    private JPanel jpMainList2 = null;    private JTextArea jta = null;            private JScrollPane getJsp(){        if(jsp == null){            jsp = new JScrollPane();            jsp.setLayout(null);            jsp.setAutoscrolls(true);            jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);            jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);            jsp.add(getjp());            jsp.setSize(500,600);            jsp.setBackground(Color.red);        }        return jsp;    }        private JPanel getjp(){        if(jp == null){            jp = new JPanel();            jp.setLayout(null);            jp.add(getjta());            jp.setLocation(50, 50);            jp.setSize(1000,1000);            jp.setBackground(Color.white);                    }        return jp;    }        private JTextArea getjta(){        if(jta == null){            jta = new JTextArea();            jta.setSize(1500, 1500);            jta.setBackground(Color.CYAN);        }        return jta;    }        public test(){        this.setLayout(null);        this.add(getJsp());        this.setExtendedState(Frame.MAXIMIZED_BOTH);        this.setVisible(true);    }        public static void main(String[] args){        new test();    }}



Jpanel 的大小 已经超出 JScrollPane 的大小了 ,怎么滚动条没有用?  
应该怎么做?帮帮忙!

------解决方案--------------------------------------------------------
Java code
import java.awt.Dimension;import java.awt.Toolkit;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;@SuppressWarnings("serial")public class Test extends JPanel {    @Override    public Dimension getPreferredSize() {        return new Dimension(600, 600); // 这个值只是推荐值,并不一定会使用到    }    private static void createGuiAndShow() {        JFrame frame = new JFrame("");                JPanel panel = new JPanel();        panel.add(new JButton("....Button...."));        panel.setPreferredSize(new Dimension(600, 600)); // 这里设置才有用        JScrollPane scroller = new JScrollPane(panel);        frame.getContentPane().add(scroller);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        int sw = Toolkit.getDefaultToolkit().getScreenSize().width;        int sh = Toolkit.getDefaultToolkit().getScreenSize().height;        int w = 400;        int h = 400;        int x = (sw - w) / 2;        int y = (sh - h) / 2 - 40;        x = x > 0 ? x : 0;        y = y > 0 ? y : 0;        frame.setBounds(x, y, w, h);        frame.setVisible(true);    }    public static void main(String[] args) {        createGuiAndShow();    }}
  相关解决方案