gpt4 book ai didi

java - 在 GridLayout 布局管理器中动态调整链接到 JLabel 的图像大小

转载 作者:行者123 更新时间:2023-11-30 08:25:37 25 4
gpt4 key购买 nike

当前的实现布局: implementation layout

((编辑:添加代码: ))

private JPanel panelCenter;
private List<BufferedImage> listCreatedImages;
public ChooseCircuitPanel(List<BufferedImage> listCreatedImages) {
this.listCreatedImages = listCreatedImages;
initiate();
}
private void initiate() {
setLayout(new BorderLayout(50, 50));
panelCenter = new JPanel();
LayoutManager theLayout = new GridLayout(0, 3, 0, 0);
panelCenter.setLayout(theLayout);
panelCenter.setBorder(BorderFactory.createLineBorder(Color.BLACK));
for (BufferedImage bufferedImage : listCreatedImages) {
ImageIcon theImage = new ImageIcon(bufferedImage);
JLabel lblForImage = new JLabel(theImage);
lblForImage.setBorder(BorderFactory.createLineBorder(Color.BLACK));
panelCenter.add(lblForImage);
}
this.add(panelCenter, BorderLayout.CENTER);
}

情况:

我们想在这里展示一个赛道。应通过将标准 block 并排放置来显示电路。应该可以调整窗口大小,并且电路 block 也应该调整大小。

((编辑:更多信息:赛道数据存储在服务器上,桌面应用程序必须通过按正确顺序放置一些标准图 block ,将数据转换为可视化内容.))

((编辑:我们不允许使用任何外部库。仅使用 Java Swing 代码应该可以做到。))

我考虑将图像放在 JLabel 中,然后将这些 JLabel 放在一个面板中,并将 GridLayout 作为布局管理器。

使用 GridLayout - 我认为 - 应该很容易找到解决方案:GridLayout (= JLabels) 中的组件已经缩放并完全按照我的要求进行。现在,只需要找到一种方法来调整图像的大小以填充 JLabel

如您所见:现在,图像具有固定大小,根本无法缩放。

我浏览了一下,看到了很多归结为使用 Graphics2Dsuper.paintComponent 等的解决方案

但大多数这些解决方案与 GridLayout 无关。如此决定性的问题:除了使用 Graphics2D 等之外还有更简单的解决方案吗?知道我使用的是 GridLayout 吗?

如果没有,我当然会使用 Graphics2D 等,但我现在只是在探索我的选择。 :)

((编辑:已解决 现在,瓷砖彼此整齐地贴合在一起。不要介意错位,那是我们的错。)) result

最佳答案

没有 Swing 组件可以满足您的需求,因此您需要编写自己的代码。

最简单的方法是使用 Darryl 的 Stretch Icon在你的 JLabel 上。

或者另一种方法是创建您自己的自定义组件,在绘制图像时动态缩放图像。类似 Background Panel 的东西它具有允许您缩放或平铺图像的代码。

关于java - 在 GridLayout 布局管理器中动态调整链接到 JLabel 的图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109440/

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