【发布时间】:2014-04-09 06:28:23
【问题描述】:
每当我尝试在 KeyPressed 方法中使用 setText 时,它都不起作用,尽管当我在同一个类中的不同方法 (initComponents) 中使用它时,它在那里工作。
如有必要,请随时询问任何其他代码!
这是不起作用的 KeyPressed 方法:
@Override
public void keyTyped(KeyEvent e) {
char typed = e.getKeyChar();
if (Character.isLetter(typed) && r.getHuidigeKolom() < r.getAantalLetters()) {
typed = Character.toUpperCase(typed);
r.getLetters()[r.positie(r.getHuidigeRij(), r.getHuidigeKolom())].setText(typed + "");
r.getLetters()[r.positie(r.getHuidigeRij(), r.getHuidigeKolom())].setBackground(Color.blue);
if (r.getHuidigeKolom() == 0) {
for (int i = 1; i < r.getAantalLetters(); i++) {
r.getLetters()[r.positie(r.getHuidigeRij(), i)].setText(".");
r.getLetters()[r.positie(r.getHuidigeRij(), i)].setBackground(Color.blue);
}
r.volgendeKolom(true);
if (r.getHuidigeKolom() < r.getAantalLetters()) {
r.getLetters()[r.positie(r.getHuidigeRij(), r.getHuidigeKolom())].setBackground(hoverKleur);
}
if (typed == 10 && r.getHuidigeKolom() >= r.getAantalLetters()) { //typed 10 is ENTER
this.controle();
}
if (typed == 8 && r.getHuidigeKolom() > 0) { //typed 8 is BACKSPACE
this.eentjeTerug();
}
}
}
}
setText 方法确实在这个方法中起作用:
private void initComponents(String woord) {
this.setLayout(new GridLayout(r.getAantalPogingen(), r.getAantalLetters(), 2, 2));
for (int i = 0; i < r.getAantalPogingen() * r.getAantalLetters(); i++) {
r.getLetters()[i] = new Label();
r.getLetters()[i].setBackground(Color.white);
r.getLetters()[i].setForeground(Color.black);
r.getLetters()[i].setAlignment(Label.CENTER);
r.getLetters()[i].setFont(new Font("Groot", Font.BOLD, 48));
this.add(r.getLetters()[i]);
}
for (int i = 0; i < 5; i++) {
r.getLetters()[i].setText(woord.charAt(i) + "");
r.getLetters()[i].setBackground(Color.blue);
}
r.setHuidigeKolom(0);
r.setHuidigeRij(0);
}
非常感谢您提供的任何帮助。
【问题讨论】:
-
什么是
r? -
请问你的目标是什么,没有你的 SSCCE 或 MCVE 或 MCTRE 就没有任何切割器,简短,可运行,可在局部变量中使用硬编码值进行编译
-
上面代码中的[r.positie(r.getHuidigeRij(), i)] 和下面代码中.setText() 旁边的[i] 是否具有相同的值?
-
“如有必要,请随时询问任何其他代码!” - 提供一个可运行的示例。见How to create a Minimal, Complete, Tested and Readable example
-
这是一款名为 Lingo 的猜词游戏,你猜一个单词,你只有第一个字母显示在这里:puu.sh/7l4w5.jpg 现在每当我输入它时,它应该像这样填满板:@ 987654323@ r.getLetters()[numberHere] 是显示字母的框的位置,在这种情况下,它可以从 0-24 填充,因为它是 5x5 板。
标签: java swing user-interface keylistener settext