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:
-
Ist die Trennung mittels JSplitPane überhaupt sinnvoll, oder habt ihr einen besseren Weg?
-
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]