Ich möchte einen JFrame (der eine JPanel enthält) ersetzen, wenn der Benutzer den Buchstaben "N" eingibt.JFrame-Fenster entfernen/ersetzen?
Mein aktueller Code fügt nur einen neuen JFrame hinzu, aber entfernt nicht den vorherigen.
Hier ist meine Frame.java
Klasse:
public class Frame extends JFrame {
public Frame() {
add(new Panel());
pack();
}
public static void main(String[] args) {
JFrame frame = new Frame();
frame.setVisible(true);
}
}
Und hier ist meine Panel.java
Klasse:
public class Panel extends JPanel implements ActionListener {
public Panel() {
setPreferredSize(new Dimension(1000, 1000));
setFocusable(true);
addKeyListener(new PanelKeyListener());
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Paint things
}
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
class PanelKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_N:
JFrame frame = new Frame();
frame.setVisible(true);
break;
}
}
}
}
Verwenden Sie die Tastenbelegungen API über KeyListener, Es löst die Fokusprobleme, unter denen KeyListener leidet. Erwägen Sie, CardLayout über mehrere Frames hinweg zu verwenden. – MadProgrammer