【问题标题】:How to resize jscrollpane in jframe java swing?如何在 jframe java swing 中调整 jscrollpane 的大小?
【发布时间】:2018-06-25 20:09:06
【问题描述】:

我是 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);

输出:

我想要这样的输出,这样它就可以覆盖 jframe 中的小区域

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

【问题讨论】:

  • 大多数swing组件都有一个setPreferredSize(Dimension)方法。这应该为您强制指定特定大小。您可以尝试在 JScrollPane 上调用它

标签: java swing jframe jscrollpane layout-manager


【解决方案1】:

将JScrollPane 添加到JPanel,然后将JPanel 添加到JFrame:

    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);

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

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

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

【讨论】:

  • 感谢它的工作......但它现在显示在 jframe 中间你能告诉我如何将它的位置设置为 jframe 的左侧大小吗?
  • @Ahmad 有很多方法。请参阅我的答案的后半部分,了解如何设置位置组件。你需要一个布局管理器。如果您不想使用 Netbeans,请尝试 MigLayout
  • 我正在使用 netbeans,但我的要求是以编程方式而不是通过拖放来定位它...我在问如何以编程方式进行定位?
  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2) 请参阅File Browser GUI 以了解如何在树中使用好的图标。 3) 以最小尺寸提供 ASCII 艺术或 GUI 的 预期 布局的简单绘图,如果可调整大小,则具有更大的宽度和高度 - 以显示应如何使用额外空间。 4)“你能告诉我怎么做吗?”见Using Layout Managers但是..
  • .. 教程中没有足够强调的一个技巧是许多 UI 使用多个布局。 5) 投票结束的范围太广。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多