所以我试图挑战自己并创建一个简单的文字处理器应用程序。我正在设置键盘并且在键盘上遇到一些问题。我有一个字符串数组与字母表中的每个字母,并希望将它们放在按钮上。
我现在有这个:
String FirstRow [] = {"q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m"};
for(int i = 0; i < 40; i++)
{
if(i < 10)
{
JButton btn = new JButton();
Nums.add(btn);
btn.setText("" + Num);
Num++;
}
else
{
JButton btn1 = new JButton ();
Nums.add(btn1);
btn1.setText("" + FirstRow[n]);
n++;
}
}
如果没有if语句的else部分,它可以很好地将数字放入第一行。然而,当我尝试放置字母时,我得到一个超出范围的例外,我不知道如何解决这个问题。
答案 0 :(得分:2)
Yor数组只包含26个元素,但你的循环最多可达39个。 所以当你的for循环达到26的数量时(数组被归零) 你会得到ArrayIndexOutOfBoundsException。
答案 1 :(得分:2)
超出范围的异常意味着您正在尝试访问大于数组可容纳的索引。请尝试使用foreach:How does the Java 'for each' loop work?
或尝试for(int i = 0; i < your_array.length; i++)
答案 2 :(得分:2)
您应该将虚拟键盘设为二维数组:
String[][] keyCaps = {{"`", "1", ..., "0", "-", "="},
{"q", "w", ..., "p", "[", "]", "\\"},
...,
{"z", "x", ..., "m", ",", ".", "/"}};
然后,
for (String[] row: keyCaps) {
for (String key: row) {
// create button.
// Add button to layout.
}
// Go to next row on screen.
}
当然,您可以根据区域设置选择不同的阵列。如果语言环境是法语,您可能需要法语AZERTY(?)键盘。 AZERTY是否正确?