Ärger mit den Panels

Hallo,

ich habe folgendes Problem mit ‚meinen‘ Panels:
meine Anwendung soll einen Navigationsbereich und einen Main-Bereich haben. Dazu habe ich ein topPanel erstellt, sowie ein navPanel und ein mainPanel und die beiden mittels JSplitPane getrennt:

JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(navPanel);
splitPane.setRightComponent(mainPanel);
topPanel.add(splitPane, BorderLayout.CENTER);

In das MainPanel will ich eine Animation einbauen, ziemlich simple momentan noch: Punkt saust auf Hintergrund hinundher.

Mein Problem ist nun, wenn ich die Größe des Bildes (Playfields) zu gross für das mainPanel wähle (bzw. das Anwendungs-Fenster im Nachhinein kleiner ziehe), wird das ‚Playfield‘ über die Grenze des mainPanel in das navPanel reingezogen.

Darum meine Fragen:

  1. Ist die Trennung mittels JSplitPane überhaupt sinnvoll, oder habt ihr einen besseren Weg?

  2. Wie kann ich diese Überlagerung verhindern?

Danke & Gruss
Christian

Hallo Christian,

im Algemeinem, kannst du die PreferedSize deine nav-und mainPanel auf die insets des Parent-Panel einstellen. Damit wäre meiner Meinug nach dein problem gelöst. Mit Swing bin ich noch nicht so Fit, aber es ist ja auch nur AWT darunter. Die setSize-Methode ist sowieso im Component, glaub ich zumindest.

Probier mal aus.Hier einen Auszug einer meine Anwendungen.

public java.awt.Dimension getPreferredSize()
{
java.awt.Insets insets = getInsets();
int count = getComponentCount();
int hgap = (( java.awt.FlowLayout)getLayout()).getHgap();
int vgap = (( java.awt.FlowLayout)getLayout()).getVgap();

//Maximun of 4 columns,

int cols= Math.max(1, Math.min(count,4));

// Te following code exactly determines the size
// necessary to show all the thumbnails.

java.awt.Dimension d = new java.awt.Dimension( cols * (cellSize + hgap)+ hgap ,
(( count -1) / cols + 1) * ( cellSize + vgap) + vgap ) ;

// Dont forget the frame’s insets
d.width += insets.left + insets.right;
d.height += insets.top + insets.bottom;

// Make sure it’s not larger than the screen
java.awt.Dimension screenDim = getToolkit().getScreenSize();
d.width = Math.min( d.width , screenDim.width);
d.height = Math.min( d.height , screenDim.height);

return d;
}

Gruss, Marc

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke, ich werds mal probieren (o.n.T.)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]