【问题标题】:How to add JLabel in a JPanel Vertically?如何在 JPanel 中垂直添加 JLabel?
【发布时间】:2018-11-28 17:13:30
【问题描述】:

我想在 JPanel 中动态添加 JLabels,就像我附加的图像一样。加载所有图像后,我需要选择一个图像,然后选择的图像应该出现在另一个 JPanel 中。我正在从包含路径的 ArrayList 中读取图像。

我在 JScrollPane 中将 Jpanel 与 GridLayout 一起使用,但结果与我想要的不一样。

这是我用来添加 Jlabels 的代码:

for(String file: files) {                   
                    JLabel JLabelPicture = new JLabel(new ImageIcon(file));
                    panel_images.add(JLabelPicture);
                }

【问题讨论】:

  • “结果和我想要的不一样” 你能解释一下你看到的结果是什么吗?并将创建 GridLayout 和 JPanel 的代码添加到您的问题中。

标签: java swing


【解决方案1】:

我在 JScrollPane 中使用了带有 GridLayout 的 Jpanel,但结果与我想要的不一样。

GridLayout 将允许您垂直显示组件。创建面板时,您只需使用:

JPanel imagePanel = new JPanel( new GridLayout(0, 1) );

这会将所有图像的大小调整为相同的大小。

另一种选择是使用垂直BoxLayout。在这种情况下,您可以使用:

Box imagePanel = Box.createVerticalBox();

在这种情况下,图像将保留其首选尺寸。

在这两种情况下,您都将面板添加到添加到框架中的滚动窗格中:

frame.add( new JScrollPane( imagePanel ) );

阅读Layout Managers 上的 Swing 教程,了解更多信息和每种布局的工作示例。

编辑:

列出图片后,我需要选择其中一张,

那么,您最初问题中的要求在哪里。应该在问题中定义完整的要求,以便所有信息都在一个地方供所有人查看。

所以我建议您应该使用 JList 来显示图标。阅读 How to Use Lists 上的 Swing 教程部分了解更多信息。

【讨论】:

  • 感谢您的回复,我使用了您的代码,但是这些图像应该可以选择。我的意思是在列出我需要选择其中一个的图像后,所选图像应该出现在另一个面板中。此代码仅生成包含所有图像的 1 行。请让我知道,使用 Jpanel 是个好主意吗?还是我应该使用其他工具?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多