B
bubble
Gast
Hallo,
ich habe ein Hauptfenster Klasse: MainWindow
und habe ein Dockingfenster Klasse: MyDialog
WEnn mein Hauptfenster in der Position geändert wird (componentmoved...), dann soll sich das 2 Fenster an das Hauptfenster rechterhand andocken, das universelle andocken an jeder seite probier ich später... ;-)
Unten steht mein Code der mir fette FEhler bringt sobald ich den code laufen lasse, doch zumindest wird er ausgeführt und das Hauptfenster wird angezeigt.
Fehler:
ich habe ein Hauptfenster Klasse: MainWindow
und habe ein Dockingfenster Klasse: MyDialog
WEnn mein Hauptfenster in der Position geändert wird (componentmoved...), dann soll sich das 2 Fenster an das Hauptfenster rechterhand andocken, das universelle andocken an jeder seite probier ich später... ;-)
Unten steht mein Code der mir fette FEhler bringt sobald ich den code laufen lasse, doch zumindest wird er ausgeführt und das Hauptfenster wird angezeigt.
Fehler:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MainWindow$MyDockedWindow.componentMoved(MainWindow.java:42)
at java.awt.AWTEventMulticaster.componentMoved(Unknown Source)
at java.awt.Component.processComponentEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Code:
public class MainWindow extends JFrame implements ActionListener
{
JButton dockWindowBT = new JButton("open Dock Window");
MainWindow Fenster;
MyDialog dialog;
public MainWindow()
{
super("Hauptfenster");
setLayout(null);
add(dockWindowBT);
dockWindowBT.setBounds(100,100,130,50);
dockWindowBT.addActionListener(this);
}
public static void main(String[] args)
{
MainWindow Fenster = new MainWindow();
Fenster.setSize(500,400);
Fenster.setLocationRelativeTo(null);
Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Fenster.setResizable(false);
Fenster.setVisible(true);
Fenster.addComponentListener(Fenster.new MyDockedWindow());
}
class MyDockedWindow extends ComponentAdapter
{
public void componentMoved(ComponentEvent e)
{
// Hier muss eine Prüfung stattfinden mit der aktuellen Position
// des Hauptfenster und dann werden diese Daten korrent verrechnet mit
// der Höhe/Breite des DockedWindow, nur wie schreibe ich den code dazu?
dialog.setBounds(Fenster.getX() + Fenster.getWidth(),Fenster.getY(), 100, Fenster.getHeight());
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(dockWindowBT))
{
MyDialog dialog = new MyDialog(this.getX(),this.getY(),this.getWidth(),this.getHeight());
dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
}
Code:
public class MyDialog extends JFrame
{
static final long serialVersionUID = 1L;
public MyDialog(int x, int y, int width, int height)
{
super();
this.setBounds(x+width,y,100,height);
this.setVisible(true);
this.setResizable(false);
}
}