修改2个地方
1 con = this.getContentPane(); 这里用这个
2 public void keyTyped(KeyEvent e) {
//con.setBackground(Color.WHITE);
}
这个方法就别用了,否则一直是白色
完整代码
package test.swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ChangeColor extends JFrame implements KeyListener {
Container con;
ChangeColor() {
con = this.getContentPane();
this.addKeyListener(this);
}
public void keyPressed(KeyEvent e) {
if (e.getKeyChar() == 'B')
con.setBackground(Color.BLUE);
if (e.getKeyChar() == 'R')
con.setBackground(Color.RED);
}
public void keyReleased(KeyEvent e) {
con.setBackground(Color.WHITE);
}
public void keyTyped(KeyEvent e) {
//con.setBackground(Color.WHITE);
}
public static void main(String[] args) {
ChangeColor f = new ChangeColor();
f.setSize(200, 150);
f.setLocation(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
f(e.getKeyChar()=='B')
con.setBackground(Color.BLUE);
if(e.getKeyChar()=='R')
con.setBackground(Color.RED);
将上面的部分改为下面的样子
===================================
if (e.getKeyChar() == 'B')
this.getContentPane().setBackground(Color.BLUE);
if (e.getKeyChar() == 'R')
this.getContentPane().setBackground(Color.RED);
}
其他方法里的也类同