gpt4 book ai didi

java - 在没有布局管理器的情况下将 JScrollPane 添加到 JPanel

转载 作者:行者123 更新时间:2023-11-29 03:23:23 24 4
gpt4 key购买 nike

在我开始之前,我知道不使用布局管理器是个坏主意,而且我通常会使用布局管理器,但是,我还让我的所有组件根据窗口的大小自动调整大小和重新定位.此外,我正在处理的程序只打算在其整个生命周期内在一台机器上运行。请不要仅仅因为缺少布局管理器而对我投反对票,我发现它正是这个特定程序所需要的。

对于我的问题,我在 stackoverflow 上找到了类似的帖子,但从未找到解决方案。我正在向我的 JPanel 添加动态数量的 JLabels,我注意到当不使用布局管理器时,滚动条不起作用。

这是我的初始化代码的简化版本。

JPanel mypanel = new JPanel();
mypanel.setLayout(null);
mypanel.setSize(800,450);
mypanel.setForeground(Color.WHITE);
mypanel.setBackground(Color.BLACK);
scrollablePanel = new JScrollPane(mypanel);
scrollablePanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollablePanel.setPreferredSize(new Dimension(800,300));
scrollablePanel.setSize(800,300);
scrollablePanel.setLocation(250,156);
myContainer.add(scrollablePanel);

其中 myContainer 是容器(也没有布局管理器)。 JLabels 稍后添加到 JPanel 中:

在这里输入代码mypanel.add(label1);

在为标签设置一些基本设置后,例如setForegroundsetBackground

不幸的是,在运行时,滚动条似乎不需要(见图)

http://i.imgur.com/zp0QKGG.png

图中看到的表格文字是由多个JLabel组成的。如果不使用布局管理器无法解决问题,我将切换到 BoxLayout,我只是希望有解决方案。

最佳答案

问题是 JScrollPanel 需要 View 组件的首选大小来确定 View 何时超出滚动 Pane 的可视区域。

组件的首选尺寸通常由布局管理器决定。虽然您可以使用 setPreferredSize,但通常不鼓励这样做,您只会遇到同样的问题,因为内容超出了您决定设置的任何值。

更好的解决方案是使用 LayoutManager 或复合布局(在多个容器上使用多个布局管理器)来实现您想要的结果……或者编写您自己的……

关于java - 在没有布局管理器的情况下将 JScrollPane 添加到 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22371039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com