Java swing; Wie toggle panel die Sichtbarkeit?
ich habe diesen code zu navigieren Trog panel1 und panel2
mit Tasten.
(button1 und button2), aber wenn ich meinen code der frame bleibt leer.
Kann jemand mir erklären was ich falsch mache und wie ich erreichen kann
Umschalten zwischen panel1 und panel2 auf diese Weise? Beginnend mit panel1 ersten
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class togglepanel {
public static void main(String[] args) {
final JFrame frame = new JFrame();
final JPanel panel1 = new JPanel();
final JPanel panel2 = new JPanel();
JButton button1 = new JButton("previous frame!");
JButton button2 = new JButton("next frame");
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
frame.setSize(600, 400);
frame.add(panel1);
frame.add(panel2);
panel1.add(button2);
panel1.setVisible(true);
panel2.add(button1);
panel2.setVisible(false);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
panel1.setVisible(true);
panel2.setVisible(false);
}
});
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
panel1.setVisible(false);
panel2.setVisible(true);
}
});
}
}
vielen Dank im Voraus
+1 für sscce. Neu formatiert-code; bitte zurücksetzen, wenn falsch.
Alle Rechte, die es zu schätzen wissen!
Alle Rechte, die es zu schätzen wissen!
InformationsquelleAutor Opoe | 2011-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einen layout-manager.
Rahmen.setLayout(new FlowLayout());
Der layout-manager verarbeitet die Einstellung der Positionen und Größen aller Komponenten auf dem Bildschirm. Wenn Sie nicht mit einem layout-manager, den Sie haben, alles zu tun, Positionierung und Größe selbst. Hier ist eine gute Erklärung der layout-Manager link
Okay danke, schätzen Ihre Zeit!
Verwenden Sie einen verschiedenen layout-manager--
JFrame
's content-Bereich verwendetBorderLayout
standardmäßig. Dieadd()
Anrufe, die beide standardmäßig aufCENTER
, und nur eine Komponente, kann es sein, so der zweite überschreibt den ersten.InformationsquelleAutor Eric Milas
Ein weiterer nützlicher Weg, um dies zu tun, und ich denke, besser ist die Verwendung eines CardLayout und fügen Sie beide JPanels zu einem container, der mittels CardLayout. Dann können Sie ganz einfach die swap-views durch Aufruf der CardLayout-Methoden.
z.B.,
Das CardLayout wird, stellen Sie sicher, dass die Dinge von der Größe OK, dass die preferredSize des Containers wird die preferredSize der größten Karte-Komponente. Das CardLayout kümmert sich der erneuten überprüfung und Malerarbeiten Dinge, so dass es macht es schwieriger zu Schraube Dinge. Es auch erlaubt sowohl eine sequenzielle als auch das ändern der Karten (über die next() und previous () - Methode) und random-access-änderungen der Karten (mit der String-Konstanten, die Sie verwenden, fügen Sie die Karten auf den container).
Danke für diese tolle Antwort! Ich bin sicher, das wird helfen, eine Menge andere auch!
Du bist herzlich willkommen. Vielen Dank für das feedback.
InformationsquelleAutor Hovercraft Full Of Eels