java - 为什么JScrollPane没有出现滚动条?
怪我咯
怪我咯 2017-04-18 10:32:35
[Java讨论组]
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JPanel;

import java.awt.Dimension;
import java.awt.Component;
import java.awt.GridLayout;
class Test{
    JFrame jframe;
    JLabel jlabel1;
    JLabel jlabel2;
    JLabel jlabel3;
    JLabel jlabel4;
    JScrollPane jscrollpane;
    JPanel jpanel;
    
    Dimension size;

    Test(){
        jframe=new JFrame();
        jpanel=new JPanel(new GridLayout(4,1));
        jlabel1=new JLabel("label1");
        jlabel2=new JLabel("label2");
        jlabel3=new JLabel("label3");
        jlabel4=new JLabel("label4");
        jpanel.add(jlabel1);
        jpanel.add(jlabel2);
        jpanel.add(jlabel3);
        jpanel.add(jlabel4);
        jpanel.setPreferredSize(new Dimension(200,200));

        jscrollpane=new JScrollPane(jpanel);
        jscrollpane.setSize(100,100);
        
        jframe.add(jscrollpane);
        jframe.setSize(new Dimension(300,300));
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jframe.setVisible(true);
        jframe.setLayout(null);
        }
    public static void main(String arr[]){
        SwingUtilities.invokeLater(new Runnable(){public void run(){new Test();}});
        }
    }
    

JPanel的size比jscrollpane还要大,为什么没出现滚动条?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
迷茫

把setVisible(true)放到最后,genius,不然setLayout(null)是不起作用的,在setLayout(null)(空布局器)的情况下,你可以随意用setSize规定组件的大小,如果有布局管理器的存在,setSize就不会总是起作用了,这时要用setPreferredSize(Dimension)。
回到主题,由于setVisible是在setLayout(null)之前,所以JFrame使用的是默认布局器,当然,如果把null换成FlowLayout或GridLayout之类则会起作用,setVisible在setLayout之前会不起作用只是针对null而言。因为JFrame的布局器是BorderLayout,JScrollPane的setSize无效,并且BorderLayout让JScrollPane的size与JFrame相等,这样JPanel的size大于JScrollPane的size就不成立了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号