Java(GUI)多次添加JButton?

时间:2011-10-04 17:11:10

标签: java swing user-interface jbutton

我正在学习Java和Im创建一个记忆类型的游戏,你必须找到两张相同的牌。

我创建了一个Window等等,但我的问题是添加多个JButton。 (我的卡是带图标的JButtons)。我已经在我的问题所在地评论了我的代码。

//Get the images.
private File bildmapp = new File("bildmapp");
private File[] bilder = bildmapp.listFiles();
//My own class extending JButton
Kort[] k = new Kort[bilder.length];

for(int i = 0; i < bilder.length; i++){
        k[i] = new Kort(new ImageIcon(bilder[i].getPath()));
    }



//Later in my code:
    int sum = rows * columns;
    Kort[] temp = new Kort[sum];

            //My function to randomize.
    Verktyg.slumpOrdning(k);

            //***********************//
            //Trying to fill a array from K (which contains all cards) so my temp contains SUM cards and SUM/2 pairs
    for(int i = 0; i < sum/2; i++){
        temp[i] = k[i];
        temp[i+sum/2] = k[i];
    }


            //Problem is that i only get SUM/2 (half of the cards) cards, not the 16 (8 pairs) i would like to  add in this case
            //SYNLIGT = VISIBLE.
    for(int i = 0; i < sum; i++){
        temp[i].setStatus(Kort.Status.SYNLIGT);
        j.add(temp[i]);
    }

3 个答案:

答案 0 :(得分:4)

您的代码最终会将每个Kort对象添加到容器两次,因为数组temp包含对每个Kort的两个引用。当您第二次添加Kort时,它会移动到第二个位置。 Component一次只能出现在一个地方。

答案 1 :(得分:2)

您可能无法两次添加相同的小部件。您需要两个单独的按钮(但您可以在两个按钮上使用相同的图标)。

答案 2 :(得分:0)

您必须创建sum JButton对象而不是sum/2;否则2个按钮是相同的,因此只显示一次。