将一个Array元素作为Label放在JButton上

时间:2013-06-11 13:24:28

标签: java arrays swing exception jbutton

所以我试图挑战自己并创建一个简单的文字处理器应用程序。我正在设置键盘并且在键盘上遇到一些问题。我有一个字符串数组与字母表中的每个字母,并希望将它们放在按钮上。

我现在有这个:

    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部分,它可以很好地将数字放入第一行。然而,当我尝试放置字母时,我得到一个超出范围的例外,我不知道如何解决这个问题。

3 个答案:

答案 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是否正确?