java师傅救命啊!救命啊!!!!

2024-11-24 20:07:03
推荐回答(2个)
回答1:

修改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);
  }
}

回答2:

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);
}

其他方法里的也类同