java - 为什么JScrollPane没有出现滚动条?

 mobiledu2502857673 发布于 2022-10-27 14:56
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就不成立了。

    2022-10-28 13:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有