为变量生成随机/唯一名称

时间:2012-12-17 19:47:17

标签: java

我试图通过这样做来生成未知数量的按钮:

    for (int i = 0; i < itemsList.size(); i++) {
        final String item = itemsList.get(i);
        TButton button = new TButton("" + item, 8, 415 + (25 * i), 90, 25) {
            public void doAction() {
                System.out.println("Item: " + item);
            }
        };
        this.buttons.add(button);
    }

    for (TButton button : buttons) {
        this.framework.add(button);
    }

然而,框架不接受具有相同名称的多个按钮,因此我收到错误。

我可以为每个按钮生成随机/唯一名称吗?

错误:

Exception in thread "main" java.lang.IllegalStateException: gtge.TestGame$1@32301b86     [UIName=Button, bounds=8,415,90,25] [text=Plante] already reside in another container!!!
at com.golden.gamedev.gui.toolkit.TContainer.add(Unknown Source)
at com.golden.gamedev.gui.toolkit.FrameWork.add(Unknown Source)
at gtge.TestGame.update(TestGame.java:78)
at com.golden.gamedev.Game.startGameLoop(Unknown Source)
at com.golden.gamedev.Game.start(Unknown Source)
at com.golden.gamedev.GameLoader.start(Unknown Source)
at gtge.TestGame.main(TestGame.java:96)

3 个答案:

答案 0 :(得分:0)

我不知道java,但我在vb中做了类似的事情,guid用guid.newguid()来创建一个新的唯一值。

答案 1 :(得分:0)

您可以使用hashCode()方法。

答案 2 :(得分:0)

这就是诀窍:

    for (int i = 0; i < itemsList.size(); i++) {
        final String item = itemsList.get(i);
        TButton button = new TButton("" + item, 8, 300 + (25 * i), 90, 25) {
            public void doAction() {
                System.out.println("Item: " + item);
                //TestGame.this.test = "" + item;
            }
        };
        this.framework.add(button);
    }