# Position eines Fensters festlegen



## Sengir (29. Mai 2007)

Hi Leute,

wie kann ich denn ein kleineres Fenster (wenn es durch klicken eines Buttons geöffnet wird) an einer bestimmten Stelle in meinem Hauptfenster anzeigen lassen ?
Zum Beispiel direkt an einem JButton oder so ?

Ausserdem sollte sich dieses kleine Fenster mitbewegen, wenn man das Hauptfenster verschiebt, so dass es sich quasi am Hauptfenster orientiert und nicht am Bildschirm.

Wär klasse, wenn mir jemand helfen könnte, die Methoden _setLocation(int x, inty)_ und _setLocationRelativeTo(component)_ erfüllen diese Zwecke nicht und ich hab bisher noch keine Alternativen gefunden.

Mfg Sengir


----------



## Gast (29. Mai 2007)

Hallo !
auf die Schnelle :
hast Du schon von Internal Frame gehört ?

So ein internes Fenster wird immer in Deinem
Hauptfensetr bleiben, wennDu das große verschiebst,
geht es daruim ?

Schau mal hier :
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JInternalFrame.html


----------



## André Uhres (29. Mai 2007)

```
package dialogs;
/*
 * PaletteDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PaletteDemo extends JFrame{
    private JToggleButton btShow;
    private JToolBar toolbar;
    private Palette palette;
//    private int deltaX;
//    private int deltaY;
    private int xP=-1, yP;
    public PaletteDemo() {
        super("Palette Demo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        toolbar = new JToolBar();
        btShow = new JToggleButton("Palette");
        palette = new Palette();
        toolbar.add(btShow);
        getContentPane().add(toolbar, BorderLayout.NORTH);
        getLayeredPane().add(palette, JLayeredPane.PALETTE_LAYER);
        btShow.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                btShowActionPerformed(evt);
            }
        });
//        addMouseListener(new MouseAdapter(){
//            public void mousePressed(final MouseEvent e) {
//                deltaX = e.getX() - palette.getX();
//                deltaY = e.getY() - palette.getY();
//            }
//        });
//        addMouseMotionListener(new MouseMotionAdapter() {
//            public void mouseDragged(final MouseEvent e) {
//                xP = e.getX() - deltaX;
//                yP = e.getY() - deltaY;
//                palette.setLocation(xP, yP);
//            }
//        });
    }
    private void btShowActionPerformed(final ActionEvent evt) {
        if(xP == -1){
            xP = btShow.getX();
            yP = btShow.getY() + btShow.getPreferredSize().height;
        }
        palette.setLocation(xP, yP);
        palette.setVisible(btShow.isSelected());
    }
    public static void main(final String args[]) {new PaletteDemo().setVisible(true);}
}
class Palette extends JPanel {
    public Palette(){
        setSize(200,100);
        setBorder(BorderFactory.createLineBorder(Color.BLACK));
        setBackground(Color.YELLOW);
        add(new JLabel("<html>JPanel im PALETTE_LAYER
vom JLayeredPane"));
        setVisible(false);
    }
}
```


----------

