首页 > 解决方案 > 如何在 jframe java swing 中调整 jscrollpane 的大小?

问题描述

我是 java swing 新手,目前我正在使用 java swing 开发应用程序,我面临的问题是,当我用 JScrollPane 填充我的 JList 时,它会显示在我的整个 jframe 上。代码:

List<Element> parentElements = xmlUtil.getParentElements();
        String title = "License";
        JFrame f = new JFrame(title);



        String[] parentTags = new String[parentElements.size()];
        for(int i=0;i<parentElements.size();i++)
        {
            System.out.println(parentElements.get(i).getName());
            parentTags[i] = parentElements.get(i).getName();
        }

        JList list = new JList(parentTags);
        JScrollPane scrollPane = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setPreferredSize(new Dimension(50,40)); 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = f.getContentPane();

        contentPane.add(scrollPane);

        f.setSize(900, 700);
        f.setVisible(true);

输出:jscrollpane输出

我想要这样的输出,这样它就可以覆盖 jframe 中的小区域 在此处输入图像描述

请告诉我如何调整它的大小?因为我很长时间以来都陷入了这个问题。

标签: javaswingjframejscrollpanelayout-manager

解决方案


添加JScrollPane到 aJPanel然后添加JPanelJFrame:

    JScrollPane scrollPane = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = f.getContentPane();

    JPanel panel = new JPanel();
    panel.add(scrollPane);
    panel.setPreferredSize(new Dimension(50,40));
    contentPane.add(panel);

然后你可以使用 的setPreferredSize方法JPanel来调整它的大小。

还可以考虑使用一个好的布局管理器。我使用两个(主要)的组合:

  1. Netbeans 的拖放式所见即所得编辑器 (Matisse)
  2. MigLayout - 轻松获得最好的手写布局。需要一些学习曲线(但学习比其他人少)。

推荐阅读