Java swing - 在 JPanel 上动态显示多个图像

发布于 2024-12-21 11:47:06 字数 329 浏览 0 评论 0原文

我搜索了很多在 JPanel 上动态添加和显示图像的地方,但无法获得适当的帮助。 基本上我有 JPanel,我必须在其上垂直显示许多图像,但它应该是动态的。

for(int i=0;i<macthedImages.length;i++) {
    JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i]));
    searchResultPanel.add(jLabel);
}

macthedImages 是 bufferedImages 的数组 searchResultPanel 是 JPanel

I have searched many places to add and display images dynamically on JPanel but couldn't get proper help.
Basically I have JPanel on which I have to display many images vertically but it should be dynamic.

for(int i=0;i<macthedImages.length;i++) {
    JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i]));
    searchResultPanel.add(jLabel);
}

macthedImages is an array of bufferedImages
searchResultPanel is JPanel

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟花易冷人易散 2024-12-28 11:47:06

1)你必须设置正确的 LayoutManager

2)大量JLabel 中的图像数量将是 GridLayout 最佳选择,以防万一你想要的查看一个 JPanel 上的所有图像

3) 使用 CardLayout,如果你想分别查看每个图像

4) 也许不需要重新创建

JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i]));

只需设置

jLabel[i].setIcon(macthedImages[i]);

5) 也许将 JPanel 放在 JSCrollPane

6) 如果您在运行时添加/删除 JCOmponents,则必须调用

revalidate();
repaint()// sometimes required

1) you have to set proper LayoutManager,

2) for lots of Images in the JLabel would be GridLayout best options, in case that you want to see all images on one JPanel

3) use CardLayout, if you want to see each Image separatelly

4) maybe there no needed re-create

JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i]));

only to set

jLabel[i].setIcon(macthedImages[i]);

5) maybe put JPanel to the JSCrollPane

6) if you add/remove JCOmponents on Runtime you have to call

revalidate();
repaint()// sometimes required
揽月 2024-12-28 11:47:06

如果您想同时显示所有图像,请使用 GridLayout 但您必须考虑网格布局的行和列。

GridLayout gl = new gridLayout(2,macthedImages.length/2);

或者,如果您想一次显示一张图像,请使用 CardLayout。像这样:

CardLayout cl = new CardLayout();
for(int i=0;i<macthedImages.length;i++){
        JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i]));
        cl.add(jLabel, "jLabel"+i);
    }

在第二个选项中,您可以通过触发事件来显示任何图像。它提供了许多方法

If you want to show all images at same time then use GridLayout but you have to consider rows and columns of grid layout.

GridLayout gl = new gridLayout(2,macthedImages.length/2);

Or if you want to show one image at a time then use CardLayout. Like this:

CardLayout cl = new CardLayout();
for(int i=0;i<macthedImages.length;i++){
        JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i]));
        cl.add(jLabel, "jLabel"+i);
    }

In second option you can show any image by firing event. It provides many methods

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文