Wie kann ich einen JPanel
oder JFrame
& seinen Inhalt durch einen anderen durch einen einfachen Knopfklick in den gleichen Behälter ersetzen?Ersetzen Sie Panels mit einem anderen
-1
A
Antwort
0
Der Trick wäre, CardLayout zu verwenden oder Panel-Sichtbarkeit zu ändern. Sehen Sie sich das folgende Beispiel an, das die Panel-Sichtbarkeit ändert.
public class PanelExample {
private JPanel _myPanel1,_myPanel2;
public void init() {
JFrame frame = new JFrame("Testing");
JPanel mainPanel = new JPanel(new GridBagLayout());
_myPanel1 = new JPanel();
_myPanel1.add(new JLabel("Panel 1"));
_myPanel1.setVisible(true);
_myPanel2 = new JPanel();
_myPanel2.add(new JLabel("Panel 2"));
_myPanel2.setVisible(false);
JButton button = new JButton("Switch to Panel2");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(_myPanel1.isVisible()) {
_myPanel1.setVisible(false);
_myPanel2.setVisible(true);
button.setText("Switch to Panel1");
} else {
_myPanel1.setVisible(true);
_myPanel2.setVisible(false);
button.setText("Switch to Panel2");
}
}
});
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.PAGE_START;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.weighty = 0;
mainPanel.add(button,gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.BOTH;
gbc.gridwidth = 2;
gbc.gridheight = 2;
gbc.weightx = 1;
gbc.weighty = 1;
mainPanel.add(_myPanel1,gbc);
mainPanel.add(_myPanel2,gbc);
frame.add(mainPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
PanelExample exmp = new PanelExample();
exmp.init();
}
}
0
hier ein einfaches Beispiel, das Sie bitte Code zeigen, folgen kann, damit so können wir Ihr Problem mit diesen einen Snap-Code von unwissenden Quelle (alte)
package layout;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class CardLayoutExample extends JFrame{
JPanel totelPanel,btnPan,showPan;
JButton btn1,btn2;
public static void main(String[] args) {
CardLayoutExample ex = new CardLayoutExample();
ex.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ex.pack();
ex.setLocationRelativeTo(null);
ex.setTitle("BookClube library system");
ex.setVisible(true);
}
public CardLayoutExample(){
btn1 = new JButton("menu button");
btn2 = new JButton("back button");
CardLayout c1 = new CardLayout();
btnPan = new JPanel();
btnPan.add(btn1);
showPan = new JPanel();
showPan.add(btn2);
totelPanel = new JPanel(c1);
totelPanel.add(btn1,"1");
totelPanel.add(btn2,"2");
c1.show(totelPanel,"1");
JPanel fullLayout = new JPanel(new BorderLayout());
fullLayout.add(totelPanel,BorderLayout.NORTH);
add(fullLayout);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c1.show(totelPanel,"2");
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c1.show(totelPanel,"1");
}
});
}
}
Verwandte Themen
- 1. Ersetzen Sie das Fragment mit einem anderen
- 2. Ersetzen Sie einen Brief mit einem anderen mit ikonischen
- 3. Ersetzen Sie include-Anweisung mit einem anderen Dateinamen mit make
- 4. Ersetzen Sie geladene URL mit einem anderen via Jquery
- 5. Ersetzen Sie ein CSV-Feld mit einem anderen durch Powershell
- 6. Pandas: Ersetzen-String mit einem anderen String
- 7. Ersetzen eines Zeichens mit einem anderen in einem String
- 8. , wenn ein Wert eines anderen übereinstimmt, und ersetzen Sie mit einem anderen bestimmten Wert R
- 9. Ersetzen NaN-Werte mit einem anderen Datenrahmen mit Pandas Python
- 10. Platzieren von Elementen (Panels) in einem wx.GridBagSizer
- 11. Linq ersetzen Null/leer Wert mit einem anderen Wert
- 12. mit einem anderen Vektor, der einen Teil eines Vektors Ersetzen
- 13. besseres Design für Ajax ersetzen div mit einem anderen div
- 14. Wie füge ich dynamisch Panels zu anderen Panels zur Laufzeit in Java hinzu?
- 15. schwarzen Hintergrund mit einem anderen Bild zu ersetzen
- 16. Ersetzen Sie einen Hyperlink mit einem Iframe
- 17. Ersetzen Sie Zeilen in einem Pandas df mit Zeilen aus einem anderen df
- 18. Ersetzen Sie Spring Bean in einem Kontext mit Mock-Version aus einem anderen Kontext
- 19. Ersetzen Sie ein Sonderzeichen von einem HTML mit einem anderen Zeichen nicht funktioniert
- 20. CSS-Problem mit der Ausrichtung der Panels innerhalb der Panels
- 21. Ersetzen Sie Werte in einem Datenrahmen mit anderen Datenrahmen mit Zeichenfolgen als Schlüssel mit Pandas
- 22. Python Parsing Expression und Ersetzen mit einem anderen Ausdruck
- 23. ersetzen weißen Teil eines Bildes mit einem anderen Bild
- 24. finden String und ersetzen mit einem anderen html/AngularJS
- 25. ein Fragment mit einem anderen Fragment Ersetzen zeigt beide Fragmente
- 26. lua ersetzen array2d Wert mit einem anderen array1d
- 27. Android: Kann Fragment innerhalb Aktivität mit einem anderen Fragment ersetzen?
- 28. Wie ein Wort ersetzen mit einem anderen Wort str_replace Funktion
- 29. Ersetzen mehrere Regex Entspricht jeder mit einem anderen Ersatz
- 30. Ersetzen bestimmter img src mit einem anderen über JavaScript
folge Hast du es versucht? Bevor wir fragen, wollen wir sehen, was Sie bereits versucht haben, bevor Sie fragen. –
Suche auf Google? –
Verwenden Sie ein ['CardLayout'] (http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html) wie in [diese Antwort] (http://stackoverflow.com) gezeigt/a/5786005/418556). –