java-gui entfernen Sie ein label mit JButton
Was brauche ich etwas Hilfe mit ist das entfernen Sie ein label und einen neuen zu erstellen mit einer Schaltfläche, klicken Sie auf. Im moment wird noch ein neues label, aber nicht entfernen Sie die alte. Ich kann nicht finden, einen Befehl, der funktioniert, northpanel.remove() zerstört das panel und dem vorherigen label, aber dann kann ich nicht erstellen, keine neue.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class test2 extends JFrame implements ActionListener {
private JTextField textfield;
private JPanel northPanel = new JPanel();
private JPanel southPanel = new JPanel();
public test2() {
setSize(400, 200);
BorderLayout layout = new BorderLayout ();
setLayout(layout);
JLabel label1 = new JLabel("remove this");
northPanel.add(label1);
JLabel label2 = new JLabel("Enter move");
southPanel.add(label2);
textfield = new JTextField(10);
southPanel.add(textfield);
JButton button = new JButton("Move /remove label");
button.addActionListener(this);
southPanel.add(button);
add(northPanel, BorderLayout.NORTH);
add(southPanel, BorderLayout.SOUTH);
}
@Override
public void actionPerformed(ActionEvent e) {
String text = textfield.getText();
if (text.equals("")) {
System.out.println("textfield is empty");
} else {
System.out.println(text);
}
//northPanel.remove();
JLabel label3 = new JLabel("new label");
northPanel.add(label3);
repaint();
validate();
}
public static void main(String[] args) {
test2 app = new test2();
app.setVisible(true);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht ändern Sie den text des Labels, statt dem entfernen der alten und hinzufügen einer neuen?
Warum versuchen Sie, entfernen Sie und fügen Sie ein label. Alles, was Sie tun müssen, ist:
Jedoch die Allgemeine Regel für das entfernen /hinzufügen von Komponenten zu einem sichtbaren GUI ist zu tun:
Erklären
label1
als instant variable. Dann initialisieren Sie dielabel1
im Konstruktor.Ändern Sie nun die actionPerformed als unten
Entfernen Sie ein label von einem frame. Sie müssen aktualisieren Sie den frame, der enthält die label-als auch. Dies funktionierte perfekt für mich.
Zur Klärung genau dies tun.
Setzen Sie einfach den Namen Ihres
frame
dann.getContentPane().remove
dann(label)
.