[JAVA] Slide effekt in einer GUI

m3x

Ensign
Registriert
Aug. 2005
Beiträge
218
Habe mir letztens den KD Player für mein Handy geholt.
Der besitzt in seinem Menü einen "Slide Effekt" (für die die nicht wissen was ich meine: Ich habe ein Menü das Vertikal angeordnet ist, pro Zeile ein Menüpunkt. wenn ich jetzt einen Punkt auswähle und bestätige, verschiebt er das ganze Menü nach links und das neue Untermenü wird von rechts in das bild rein geschoben, ich glaube das ist so wie bei einem iPod (hab sowas nicht)).
Jetzt wollte ich fragen ob man das bei einem "normalen" Java Programm in der GUI auch realisieren kann, währe eine Prima sache! :)

Besten Dank, m3x
 
Möglich ist es alle mal, wenn du nicht vorhandene Projekte einsetzen kannst, musst du es halt selber programmieren.

zB in einer Schleife die Breite eines Bereichs immer breiter machen, wenn es erscheinen soll, oder schmäler wenn es verschwinden soll
 
Also ich hab mal eine Lösung im wahrsten Sinne des Wortes zusammen gebastelt, aber es geht (ich muss selber zugeben das das nen riesen mist ist! aber man sieht die idee dahinter ;) ) (Dank an Loopo für den Gedankenstoß)

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Slider extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;
	private JButton button = new JButton("Slide");

	public Slider() {
		this.setSize(300, 100);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setLayout(null);

		button.setBounds(100, 10, 100, 20);
		add(button);
		button.addActionListener(this);

	}

	public static void main(String[] args) {
		Slider slide = new Slider();
		slide.setVisible(true);

	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource().equals(button)) {

			new Thread() {
				{
					start();
				}

				public void run() {
					int position = button.getX();

					int i = 0;
					while (i <= 100) {

						button.setBounds(position, 10, 100, 20);
						button.repaint();
						i++;
						position -= 3;
						try {
							this.sleep(1);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}

					}
					button.setBounds(400, 10, 100, 20);
					
					position = button.getX();

					i = 0;
					while (i <= 100) {

						button.setBounds(position, 10, 100, 20);
						button.repaint();
						i++;
						position -= 3;
						try {
							this.sleep(1);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}

					}

				}
			};

		} else {
		}
	}
}

m3x
 
Zuletzt bearbeitet:
Ich bin jetzt nicht so der java-spezie, aber bist Du dir sicher das man da unbedingt einen neuen Thread starten muss?


Nur mal so ins blaue gefragt :D
 
ehm, du brauchst halt eine Verzögerung in der schleife.. weil ansonsten siehst du da nicht viel von dem slide effekt, dann springt dir der Button einfach nur aus dem Fenster
 

Ähnliche Themen

Zurück
Oben