Java JScrollPane - Mehrere Komponenten
Ich versuche, fügen Sie 2 Bilder in der JScrollPane. das erste Bild ist ein hintergrund, und die zweite überlappung der ersten. Das problem zeigt nur das zweite Bild, wenn ich aus meinem Programm!
bitte helfen
ImageIcon ii = new ImageIcon("mini_map.png");
JLabel label1=new JLabel(ii);
Icon icon = new ImageIcon("Mg.gif");
JLabel label2 = new JLabel(icon);
JScrollPane jsp=new JScrollPane();
jsp.getViewport().add(label1);
jsp.getViewport().add(label2 );
InformationsquelleAutor Mike | 2011-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
JViewport ist ein single-Kind-container, können Sie nicht fügen Sie zwei Komponenten.
Erreichen eine überlappung (d.h. stack-Komponenten in z-Richtung) in alle container, you ' r meist auf Ihre eigenen, die built-in-Unterstützung ist schlecht. Entweder haben Sie zu verwalten, in LayeredPane (wie bereits erwähnt) oder versuchen OverlapLayout
InformationsquelleAutor kleopatra
Wenn Sie wollen, um Komponenten übereinander verwenden layered pane.
InformationsquelleAutor Howard
Beide Bezeichnungen im gleichen panel und fügen Sie es an der JScrollPane:
Das ist wahr, ich verpasste den Teil, wo geschrieben er will, dass Sie sich überlappen, aber dennoch ist er nicht zuordnen 2 Komponenten JScrollPane.
"..vermisst das Teil.." Manchmal bin ich so beschäftigt mit der Bearbeitung eines post von a dog ' s breakfast unformatierter code, um etwas lesbares, die ich vermissen werde, die subtilen details. Schwierigkeiten haben, die Unterscheidung der 'Wald von Bäumen'. 😉 Nebenbei, vielen Dank für die post lesbar, so dass andere (wie ich) könnte dann vor Ort die feineren details. 🙂
Der Titel hat nicht erwähnt überschneiden sich die Anforderung, und ich habe nicht Google für sich überschneidende Dinge, also +1 für das beantworten, was ich Googlig.
InformationsquelleAutor MByD
Dies ist, wie ich es tun würde für Ihr spezielles problem.
Da Sie sagen, Sie haben ein Bild, der dazu dient die Rolle eines Hintergrundes, so würde ich überschreiben paintComponent() wie in BackgroundPanel unten.
Auf diese Weise haben Sie ein panel dient als hintergrund nur. Um es hinzuzufügen, können Sie jede Art von Komponente, in deinem Fall ein JLabel mit einem ImageIcon.
Diese Weise haben Sie einen Effekt, ein Wesen über das andere und Sie sind immer noch in der Lage, verwenden Sie layout-manager zu Steuern, wo Ihre Komponenten sind.
Wenn Ihr problem komplexer ist, oder Sie wollen generell Komponenten, die eine über die andere dann tun, wie alle hier sagen ---> verwenden, JLayeredPane. Beachten Sie, dass wenn Sie JLayeredPane leider layout-Manager wird Ihnen nicht helfen, da es nicht respektiert. Gehen Sie in ähnlicher Weise auf eine situation, wenn Sie eine null-manager, d.h. setBounds() für die Komponenten.
HINWEIS: Bilder sind URLs, die so i-net-Verbindung ist erforderlich, um das Beispiel auszuführen.
EDIT1: Beispiel zeigt, wie die Verwendung JLayeredPane mit der Verwendung von layout-Managern, die für jede Ebene.
HINWEIS 2: Der einzige Grund, dass die scroll-Bereiche haben setPrefferedSize ist, so können Sie die Bildlaufleisten. Ansonsten verwenden Sie es nicht, lassen Sie das layout kümmern sich um controlling-scroll-Bereich.
InformationsquelleAutor Boro