首页 > 解决方案 > Java - 使用 Swing 创建连续的图像幻灯片

问题描述

我不知道如何在标题中正确命名我的问题,但我希望我的图像可以表达我正在寻找的内容:

https://i.stack.imgur.com/fIhP8.png

所以我想要完成的是,例如,您有两张图片,如上所示,以及旁边有一张幻灯片的对象[图片中名为 (1)]

根据幻灯片 (1) 的进度/值,图像 A 是否滑开图像 B 是否会弹出

一旦幻灯片到达底部,IMAGE B将完全占据显示区域并且IMAGE A被隐藏。反之亦然,幻灯片向上移动。

是否知道如何在 Swing 中使用 Java 创建这样的东西?我希望我的解释足够准确,可以理解。

感谢您的帮助 :)

编辑 1: 这是我实现的代码 @camickr 我认为它只能通过设置视图面板来工作。我按照你的指示做错了吗?

JPanel bigPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 20));
JPanel displayPanel = new JPanel();
JScrollPane scrollPane = new JScrollPane();
[...] 
displayPanel.setLayout(new BoxLayout(displayPanel, BoxLayout.X_AXIS));
JLabel label1 = new JLabel(new ImageIcon("R:\\imgA.jpg"));
JLabel label2 = new JLabel(new ImageIcon("R:\\imgB.jpg"));
displayPanel.add(label1);
displayPanel.add(label2);
scrollPane.setViewportView(displayPanel);
bigPanel.add(scrollPane);

标签: javaswing

解决方案


  1. 为图像创建两个JLabels,每个都有一个ImageIcon
  2. JPanel使用水平将每个标签添加到BoxLayout
  3. 将面板添加到JScrollPane
  4. 将滚动窗格添加到框架中。

如果面板没有完全填满滚动窗格的可用空间,滚动窗格将自动显示滚动条。

编辑:

您发布的代码不是“MRE”:

  1. 我们无法编译该代码,因此我们不知道如何使用代码的确切上下文。

  2. 文本字段的意义何在?你的问题是关于滚动两张图片。因此,文本字段与所述问题无关。

  3. 我们无权访问您的图像,因此也不应将其包含在“MRE”中。

您问题的基础是滚动两个标签的能力。因此,要对此进行测试,您只需要以下内容:

JLabel red = new JLabel("Image 1");
red.setOpaque(true);
red.setBackground( Color.RED );
red.setPreferredSize( new Dimension(200, 200) ); // for testing only

JLabel blue = new JLabel("Image 2");
...

JPanel displayPanel = new JPanel();
displayPanel.setLayout(new BoxLayout(displayPanel, BoxLayout.X_AXIS));
JScrollPane scrollPane = new JScrollPane(displayPanel);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);

使用上述内容作为基础创建一个适当的程序。

显示框架时,图像将以全尺寸显示。缩小框架,滚动条就会出现。

该解决方案并不完全符合您的要求,但它向您展示了如何使用默认组件来实现滚动效果。我个人发现使用水平滚动条而不是使用垂直滑块从右到左滚动图像更直观。


推荐阅读