如何通過動態單擊鍵來更改JFrame的內容,在此示例中,我想通過兩個已創建的JPanel來更改內容,當我單擊時想更改到Panel2,當我點擊我想更改爲Panel3,但我只想改變JFrames的內容(我想留在相同的JFrame中)代碼沒有錯誤,我只是有點困惑如何解決這個問題。通過單擊鍵更改JFrame的內容
class Drawing extends JFrame implements KeyListener{
int num = 1;
public Drawing() {
Panel2 jPanel2 = new Panel2();
Panel3 jPanel3 = new Panel3();
if(num == 1){
add(jPanel2);
remove(jPanel3);
pack();
}
if(num == 2){
add(jPanel3);
remove(jPanel2);
pack();
}
// be nice to testers..
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
addKeyListener(this);
}
,然後我有方法的keyPressed更改NUM取決於按下哪個鍵(我還實施的keyReleased和但的keyTyped我不包括他們添加空格)
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == e.VK_UP){
num = 1;
}
if(e.getKeyCode() == e.VK_DOWN){
num = 2;
}
}
public static void main(String args[]) {
new Drawing();
}
1或2
,這裏是兩個面板是改變頁面的圖形
class Panel2 extends JPanel {
Panel2() {
setPreferredSize(new Dimension(500,500));
}
public void paint(Graphics g) {
g.drawString("BLAH", 20, 20);
g.drawRect(200, 200, 200, 200);
repaint();
}
}
class Panel3 extends JPanel {
Panel3() {
// set a preferred size for the custom panel.
setPreferredSize(new Dimension(500,500));
}
public void paint(Graphics g) {
g.drawString("BURP", 20, 20);
g.drawRect(200, 200, 200, 200);
repaint();
}
}
這一工程!非常感謝,我對Java有點新,我真的很感謝幫助!我只有一個問題,如果我們已經通過調用paint(Graphics g)來初始化它,爲什麼還需要調用super.paint(g)? – connor
@康納爾很高興幫助 – Bon