java - 在 Java 上的 JForm 中滑动 JPanel 内容

标签 java swing jpanel slide effect

我有一个问题。我想做一个 Swing 形式,当他点击一个按钮时,他会向左滑动一个面板(带有他的内容),这样右边的面板就会以平滑的效果替换它。

我试过一段时间如何检查面板的大小,然后将其最小化并显示下一个,如下所示:

    while (jpanelprincipal1.getWidth() < 439 || jpanelprincipal1.getHeight() > 250)
    {
        int panel1width = jpanelprincipal1.getWidth();
        int panel2height = jpanelprincipal1.getHeight();
        jpanelprincipal1.setSize(panel1width -- , panel2height --);
        jpanelprincipal2.setSize(440,250);
    }

我在 C# 中使用了这个技巧,但使用了 Application.DoEvent(); (很明显它在 Java 上不可用)。

无论如何我可以制作2个或更多面板的幻灯片效果吗?

顺便说一句:抱歉我的英语很糟糕!

提前致谢, 路易斯达科斯塔

最佳答案

he slides a panel (with his content) to the left so the panel on the right replaces it with a smooth effect

你的问题提到你希望面板“滑动”,但代码看起来像你试图让面板“收缩”,所以它被另一个面板取代。

假设您有两个大小相同的面板,那么您可以将一个“滑”出 View ,同时将另一个滑入 View 。

为此,您可以使用带有 GridLayout 的面板。这样每个组件的大小都相同。然后将面板添加到没有任何滚动条的滚动 Pane 。滚动 Pane 的大小需要设置为第一个组件的大小。然后你可以通过改变视口(viewport)的位置来“滑动”这两个面板。所以在你的计时器中你会有类似的代码:

JViewport viewport = scrollPane.getViewport();
Point position = viewport.getViewPosition();
position.x += 5;
viewport.setViewPosition( position );

当位置大于组件大小时,您将停止计时器。

关于java - 在 Java 上的 JForm 中滑动 JPanel 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5069152/

相关文章:

Java JTabbedPane,更新其他选项卡 JLabel 值?

java - 如何将数据从一个 JComboBox 传递到一条 SQL 语句,该 SQL 语句将调用第二个 JComboBox 的值?

JAVA 如何在swing 中将JAVAFX 的标签嵌入到JPanel 中?

java - 如何在 JFrame 中放置两个椭圆形并占据整个屏幕

Java:使用if条件检查char变量的内容

java - 在 application.conf 中包含的 conf 文件中使用 Play Server 的 ID

Java - 异常的 GridLayout 行为

java - 将 JScrollPane 中的元素放在确定的位置

java - 用户输入的字符串在输入时的词汇排名

java - 如何在 Java 中从 ArrayList 中切出 ArrayList?