繁体   English   中英

Java Swing元素转换

[英]Java Swing element transitions

我正在尝试制作一个小型的非商业应用程序,并使其具有精心设计的界面,屏幕转换等。 我在一个JFrame中的单独面板上有每个“屏幕”,并且希望能够在面板之间转换时平滑地滑动它们。 有没有办法轻易地完成这个?

由于您还没有接受答案,我可以建议您使用SlidingLayout库吗? 它是一个非常小的库,目的是在一些组件的两个布局之间创建平滑过渡。 因此,在两个屏幕之间进行转换非常容易。 这是我刚才做的一个例子:

在此输入图像描述在此输入图像描述

两个转换之间的差异依赖于两行代码。 您还可以通过在每个组件上应用不同的延迟来创建更多花哨的过渡,因此它们不会同时出现,但它们之间会有一些时序变化。

我希望它对你有用:)

这是一个典型的动画用例。 最简单的方法是使用动画框架 我建议三叉戟

或者,您可以使用这个简单的动画库AnimaationClass来移动JComponents关于它们的x和y轴,然后隐藏/处理它们。

这提供了体面(基本和流畅)动画。

http://www.teknikindustries.com/downloads.html

它带有一个javadoc,如果你不明白你不明白。

我用Java编写了一个简单的程序来做简单的幻灯片转换。 你可以调整它来做其他事情(而不是滑动)。

以下是我的实施链接: http//www.java-forums.org/entry.php?b = 1141

这是我写的一个侦听器,用于检测屏幕上的手指拖动:

import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

/**
 *
 * @author Ozzy
 */
public class GestureListener implements MouseListener, MouseMotionListener {

        int dragStartX;
        int dragStartY;
        int dragEndX;
        int dragEndY;

        int currentX;
        int currentY;

        boolean dragged;

        private void dragGesture() {
            if (dragged) {
                int distance = dragEndX - dragStartX;
                System.out.println("Drag detected. Distance: " + distance);
                if (distance > 144) /** 2 inches on 72dpi */ {
                    //finger going right
                    MyApp.scrollLeft();
                } else if (distance < -144) {
                    //finger going left
                    MyApp.scrollRight();
                } else {
                    //do nothing
                }
                dragged = false;
            }
        }

        public void mouseDragged(MouseEvent e) {
            dragged = true;
            Point pos = e.getPoint();
            dragEndX = pos.x;
            dragEndY = pos.y;
        }

        public void mouseMoved(MouseEvent e) {
            Point pos = e.getPoint();
            currentX = pos.x;
            currentY = pos.y;
        }

        public void mouseClicked(MouseEvent e) {

        }

        public void mousePressed(MouseEvent e) {
            Point pos = e.getPoint();
            dragStartX = pos.x;
            dragStartY = pos.y;
        }

        public void mouseReleased(MouseEvent e) {
            dragGesture();
        }

        public void mouseEntered(MouseEvent e) {

        }

        public void mouseExited(MouseEvent e) {

        }

    }

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM