Java (GUI) добавляет JButton несколько раз? - PullRequest
0 голосов
/ 04 октября 2011

Я изучаю Java, и я создаю игру типа памяти, в которой вам нужно найти две одинаковые карты.

Я создал окно и т. Д. И т. Д., Но моя проблема заключается в добавлении к нему нескольких кнопок JButton. (мои карты - это кнопки с иконками). Я прокомментировал мой код, где моя проблема.

//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 ]

4 голосов
/ 04 октября 2011

Ваш код заканчивается добавлением каждого объекта Kort в контейнер дважды, поскольку массив temp содержит две ссылки на каждый Kort. Когда вы добавляете Kort во второй раз, он перемещается во второе место. Component может появляться только в одном месте одновременно.

2 голосов
/ 04 октября 2011

Вы не можете добавить один и тот же виджет дважды.Вам нужны две отдельные кнопки (но вы можете использовать один и тот же значок на обеих).

0 голосов
/ 04 октября 2011

Вы должны создать sum объекты JButton, а не sum/2; в противном случае 2 кнопки одинаковы и поэтому отображаются только один раз.

...