0
我想让这个GUI在有文本字段(下面的变量查询)的地方,并且如果GUI注意到某个键是键入的话,GUI将绘制出键入到文本字段的字符串按下。但是,如果我将字符串str初始化为“”,它在GUI上保持为“”并且永远不会改变,但是当我在paintComponent方法中打印出字符串时,它具有正确的字符串(由于某种原因,最后一个字符除外)。有小费吗?提前致谢!drawString没有正确写入字符串
private String str;
private JTextField query;
public void keyPressed(KeyEvent e) {
str = query.getText();
}
...
public void paintComponent(Graphics g){
super.paintComponent(g);
//System.out.println(str);
g.drawString(str,20,30);
}
您能否说明它为什么会发生变化? –
那么,首先,不要将KeyListener与文本组件一起使用,请在该域中注册一个DocumentListener。确保在触发DocumentListener时调用重绘... – MadProgrammer
'由于某种原因,最后一个字符除外'这是因为keypressed事件在字符追加到textfield之前触发。您可以使用keyrealesed.if要使用keypressed然后'query.getText()+ e.getKeyChar()'将解决这个问题,但澄清你的问题的其余部分 –