Hallöle,
beide .java files: http://www.sendspace.com/file/um5ry7
ich arbeite grad an einem winamp "clone"...
das sind 2 klassen einmal das hauptfenster sprich der Mp3player und das Nebenfenster bzw. SecondFrame bzw. die Playlist die im winamp normalerweise unterhalb des Mp3players ist. Wenn ich das Hauptfenster mit dem angedockten nebenfenster gaaaaaaaanz langsam verschiebe bzw. draggge dann zieht das nebenfenster mit dem hauptfenster mit bzw. es bleibt am Hauptfenster angedockt, wenn ich aber schneller ziehe, dann zieht das nebenfenster nicht mit dem hauptfenster mit bzw. es ist nicht mehr angedockt.
Das Nebenfenster bekommt sobald das Hauptfenster gezogen bzw. moved wird die x-koordinaten des Hauptfensters als eigene x-koordinaten und die y-koordinaten + die höhe des Hauptfensters als y-koordinaten zugewiesen soviel zur erklärung...
beide .java files: http://www.sendspace.com/file/um5ry7
ich arbeite grad an einem winamp "clone"...
das sind 2 klassen einmal das hauptfenster sprich der Mp3player und das Nebenfenster bzw. SecondFrame bzw. die Playlist die im winamp normalerweise unterhalb des Mp3players ist. Wenn ich das Hauptfenster mit dem angedockten nebenfenster gaaaaaaaanz langsam verschiebe bzw. draggge dann zieht das nebenfenster mit dem hauptfenster mit bzw. es bleibt am Hauptfenster angedockt, wenn ich aber schneller ziehe, dann zieht das nebenfenster nicht mit dem hauptfenster mit bzw. es ist nicht mehr angedockt.
Das Nebenfenster bekommt sobald das Hauptfenster gezogen bzw. moved wird die x-koordinaten des Hauptfensters als eigene x-koordinaten und die y-koordinaten + die höhe des Hauptfensters als y-koordinaten zugewiesen soviel zur erklärung...
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainFrame extends JFrame implements ComponentListener
{
static JFrame dialog;
public MainFrame()
{
super("HauptFenster");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(200,100);
setLocationRelativeTo(null);
setVisible(true);
dialog = new JFrame("NebenFenster");
dialog.setSize(200,100);
dialog.setLocation(500,500);
dialog.setVisible(true);
}
public void componentMoved(ComponentEvent e)
{
SecondFrame.NebenFenster.setLocation(SecondFrame.HauptFenster.getX(),SecondFrame.HauptFenster.getY()+SecondFrame.HauptFenster.getHeight());
}
public void componentHidden(ComponentEvent e) {}
public void componentResized(ComponentEvent e) {}
public void componentShown(ComponentEvent e) {}
public static void main(String args[])
{
new SecondFrame(new MainFrame(), dialog);
}
}
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SecondFrame extends ComponentAdapter
{
static Window HauptFenster, NebenFenster;
public SecondFrame(Window HauptFenster, Window NebenFenster)
{
this.HauptFenster = HauptFenster;
this.NebenFenster = NebenFenster;
HauptFenster.addComponentListener(this);
NebenFenster.addComponentListener(this);
}
public void componentMoved(ComponentEvent e)
{
int abstandNullX, abstandNullY;
abstandNullX = HauptFenster.getX()+HauptFenster.getWidth();
abstandNullY = HauptFenster.getY()+HauptFenster.getHeight();
if((NebenFenster.getX() - abstandNullX < 10) && (NebenFenster.getY() - abstandNullY < 10))
{
NebenFenster.setLocation(HauptFenster.getX(),HauptFenster.getY()+HauptFenster.getHeight());
}
else
{
;
}
}
}