사용자가 "N"문자를 입력하면 JFrame (JPanel 포함)을 교체하려고합니다.JFrame 제거/교체 하시겠습니까?
현재 코드는 새 JFrame을 추가하기 만하지만 이전 코드는 제거하지 않습니다. 여기
내Frame.java
클래스 :
public class Frame extends JFrame {
public Frame() {
add(new Panel());
pack();
}
public static void main(String[] args) {
JFrame frame = new Frame();
frame.setVisible(true);
}
}
그리고 여기 내 Panel.java
클래스입니다 : 당신이 정말로 JFrame의 교체하려면
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;
}
}
}
}
를 사용하여 키 바인딩 API, KeyListener가 겪고있는 포커스 관련 문제를 해결합니다. 여러 프레임에 걸쳐 CardLayout 사용을 고려하십시오. – MadProgrammer