我想使用drawString方法在JFrame上绘制文本,当我按下键盘上的'h'并在键盘上按'c'时清除文本这是我的代码,它正在绘图但我不是我不知道如何清楚地工作。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class test extends JPanel implements KeyListener {
char help,clear;
public test() {
super();
setFocusable(true);
this.addKeyListener(this);
}
//********************************************************************
public void paintComponent(Graphics g) {
repaint();
g.setColor(Color.red);
g.drawString("press 'H' for help ",150,50);
if(help=='h'){
g.drawString("one",150,100);
}//end id help
if(clear=='c'){
g.drawString("",150,100);
}//end id clear
}
//******************keyyyyyyy******************************************
public void keyPressed(KeyEvent e) {
if(e.getKeyChar()=='h'){
help='h';
}
if(e.getKeyChar()=='c'){
clear='c';
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
//********************************************************************
public static void main(String[] args) {
test panel=new test();
JFrame frame = new JFrame("java lover");
frame.add(panel);
frame.setSize(400,400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
感谢您的帮助。
答案 0 :(得分:1)
g.drawString("",150,100);
这样就不会画任何东西,而不是“删除”上一张图。
public void paintComponent(Graphics g) {
repaint();
这会导致无限循环。它应该是:
public void paintComponent(Graphics g) {
super.paintComponent(g); // paint the BACKGROUND and borders
这样做,原始字符串将被删除。
作为一般提示:对于Swing,通常使用基于AWT的较低级别KeyListener
的键绑定。有关如何使用它们的详细信息,请参阅How to Use Key Bindings。