Переходы элементов Java Swing - PullRequest
7 голосов
/ 14 мая 2011

Я пытаюсь сделать небольшое некоммерческое приложение и сделать его хорошо продуманным, с переходами экрана и тому подобным. У меня есть каждый «экран» на отдельных панелях в одном JFrame и я хочу иметь возможность плавно перемещать их при переходе между панелями Есть ли способ сделать это несколько легко?

Ответы [ 4 ]

7 голосов
/ 22 сентября 2012

Поскольку вы еще не приняли ответ, могу я предложить вам библиотеку SlidingLayout ?Это очень маленькая библиотека, целью которой является создание плавных переходов между двумя компоновками некоторых компонентов.Таким образом, сделать переход между двумя экранами очень легко.Вот пример, который я только что сделал:

enter image description here enter image description here

Разница между двумя переходами основана на двух строках кода.Вы также можете создавать более необычные переходы, применяя различную задержку для каждого компонента, чтобы они появлялись не сразу, а с некоторыми временными колебаниями между ними.

Я надеюсь, что это может быть полезно для вас:)

3 голосов
/ 14 мая 2011

Это типичный вариант использования анимации.Самый простой способ - использовать каркас анимации .Я бы предложил Трезубец

0 голосов
/ 09 августа 2014

В качестве альтернативы, вы можете использовать эту простую библиотеку анимации, AnimaationClass, чтобы переместить JComponents вокруг своих осей x и y, а затем скрыть / удалить их.

Это предлагает достойную (основную и плавную) анимацию.

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

Это идет с Javadoc, если вы как-то не понимаете.

0 голосов
/ 21 марта 2012

Я написал простую программу на Java для простых переходов между слайдами. Вы можете адаптировать его для других целей (кроме скольжения).

Вот ссылка на мою реализацию: http://www.java -forums.org / entry.php? Б = 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) {

        }

    }

Надеюсь, это поможет.

...