javaprogger1987
Erfahrenes Mitglied
Hi!
Ich hab folgendes Problem mit meiner GUI. Hier erstmal der Aufbau:
- JApplet (StackLayout)
In der Reihenfolge auch, JApplet ist das Root-Element, da drin sind dann ein JDesktopPane und ein JPanel mit dem StackLayout übereinander.
Mein Problem ist, dass, wenn ich die JInternalFrames über den JPanel ziehe der JPanel nicht neu gezeichnet wird (JIF sollten unter dem JPanel liegen) (s. Bild).
Ich vermute das es daran liegt wie ich die JInternalFrames verschiebe, ich habe die Titelleiste entfernt und einen eigenen Listener geschrieben:
So werden die Komponenten hinzugefügt:
Wie benachrichtige ich jetzt dort den JPanel, das dieser sich neu zeichnet?
Danke schonmal
Gruß
Tobias
Ich hab folgendes Problem mit meiner GUI. Hier erstmal der Aufbau:
- JApplet (StackLayout)
- JDesktopPane (StackLayout.TOP, Null Layout)
- JInternalFrame
- JPanel (StackLayout.TOP, BoderLayout)- JPanel (BorderLayout.SOUTH, FlowLayout)
- JButton (FlowLayout.LEFT)
In der Reihenfolge auch, JApplet ist das Root-Element, da drin sind dann ein JDesktopPane und ein JPanel mit dem StackLayout übereinander.
Mein Problem ist, dass, wenn ich die JInternalFrames über den JPanel ziehe der JPanel nicht neu gezeichnet wird (JIF sollten unter dem JPanel liegen) (s. Bild).
Ich vermute das es daran liegt wie ich die JInternalFrames verschiebe, ich habe die Titelleiste entfernt und einen eigenen Listener geschrieben:
Java:
private int xDrag, yDrag = -1;
public void mouseDragged(MouseEvent e) {
Point onFrame = e.getPoint();
Point diff = new Point( onFrame.x - xDrag, onFrame.y - yDrag );
Point onDesktop = getLocation();
setLocation( onDesktop.x + diff.x, onDesktop.y + diff.y );
}
public void mouseReleased(MouseEvent e) {
xDrag = -1;
yDrag = -1;
}
public void mousePressed(MouseEvent e) {
xDrag = e.getPoint().x;
yDrag = e.getPoint().y;
}
So werden die Komponenten hinzugefügt:
Java:
JDesktopPane desk = new JDesktopPane();
bar = new JRDTaskBar();
JButton b = new JButton("#");
b.setOpaque(false);
bar.add( b );
desk.add( createFrame( 0 ) );
desk.add( createFrame( 1 ) );
desk.add( createFrame( 2 ) );
JPanel barPanel = new JPanel();
barPanel.setLayout( new BorderLayout() );
barPanel.add( bar, BorderLayout.SOUTH );
barPanel.setOpaque(false);
this.setLayout(new StackLayout());
this.add( desk, StackLayout.TOP );
this.add( barPanel, StackLayout.TOP );
Wie benachrichtige ich jetzt dort den JPanel, das dieser sich neu zeichnet?
Danke schonmal
Gruß
Tobias