循环遍历Java数组并将append()附加到TextArea

时间:2012-02-18 17:02:46

标签: java textarea

经过几天的努力,我仍然无法通过在其他语言中使用数组来填充文本区域。我曾尝试使用Google,YouTube,stackoverflow等,但我仍然无法使用任何示例来帮助我这样做。我也引用了Java文本。这正是我想要做的:

public void getDrinks() {
    //System.out.println(theDrinks[arrayCount].toString());

    for(int i=0; i<arrayCount; i++) {
        area.append(theDrinks[i].toString());
    }
}

此代码适用于其他语言,但我使用TextArea或数组的方式有问题,因为我得到一个空指针。我想粘贴整个程序,但这也不起作用。这是唯一可以远程正确粘贴的部分。如果可以,请帮助我。

2 个答案:

答案 0 :(得分:2)

一般情况下,当您可以帮助时,您不希望使用arrayCount之类的变量。这是一个更好的版本:

public void getDrinks() {
    for(int i = 0; i < theDrinks.length; i++)
        area.append(theDrinks[i].toString());
}

执行此操作时,务必确保area已经实例化(即不是null)。

如果我实现这个,我会使用Java的foreach构造,因为我发现它更有表现力。以下代码假定theDrinksDrink个对象的数组。

public void getDrinks() {
    if(area != null) {
        for(Drink drink : theDrinks) {
            area.append(drink.toString());
        }
    }
}

答案 1 :(得分:0)

我无法解决你的具体问题,如果没有更多的代码,但这里有一些有效的java代码。

import java.awt.BorderLayout;
import java.awt.TextArea;

import javax.swing.JFrame;

public class Driver {

    public static void main(String[] args) {
        // 1. Create the frame.
        JFrame frame = new JFrame("FrameDemo");

        // 2. Optional: What happens when the frame closes?
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 3. Create components and put them in the frame.
        // ...create emptyLabel...

        TextArea area = new TextArea("Area");
        frame.getContentPane().add(area, BorderLayout.CENTER);

        // 4. Size the frame.
        frame.pack();

        // 5. Show it.
        frame.setVisible(true);

        String[] drinks = {"Drink1","Drink2"};
        getDrinks(area, drinks);
    }

    public static void getDrinks(TextArea area, String[] theDrinks) {
        // System.out.println(theDrinks[arrayCount].toString());

        for (String drink : theDrinks) {

            area.append(drink.toString());

        }

    }

}