如何通过动态单击键来更改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