2014-01-02 3 views
1

im пытается создать сетку, которая случайным образом присваивает буквы различным координатам в сетке. Тем не менее, ive удалось заставить его работать в основном, но, похоже, он только позволяет одно и то же письмо и не дублирует его. Мне нужно, чтобы там было больше одинаковых букв вокруг сетки (если это имеет смысл). ive попытался понять это и считать, что это может быть небольшая ошибка. Может ли кто-нибудь указать мне в правильном направлении? любая помощь будет принята с благодарностью ..дублирующие элементы в сетке jpanel

gridPanel = new JPanel(new GridLayout(X, Y)); 
     grid = new JPanel[X][Y];  
     bug = new JLabel("O"); 
     obstacle = new JLabel("X"); 
     food = new JLabel("F"); 
     empty = new JLabel(" "); 

     Random r = new Random(); 
     for (int i = 0; i < X; i++) { 
      for (int j = 0; j < Y; j++) { 
       grid[i][j] = new JPanel(); 
       grid[i][j].setBackground(Color.white); 
       grid[i][j].setBorder(BorderFactory 
         .createLineBorder(Color.black)); 
       gridPanel.add(grid[i][j]); 
       int num = r.nextInt(10); 
       if (num == 2) { 
        grid[i][j].add(food); 
       } else if (num == 9) { 
        grid[i][j].add(obstacle); 
       } else if (num == 5) { 
        grid[i][j].add(bug);            
       } else { 
        grid[i][j].add(empty); 
       } 
       } 
     } 

ответ

2

Вы пытаетесь добавить JLabel несколько раз графического интерфейса пользователя, и это не может быть сделано.

Вы можете добавить компонент GUI в один и только один контейнер. Подумайте о заполнении своей сетки JLabels и просто установите свой текст при необходимости. т. е. не заменять компоненты, а заменять состояние ваших компонентов.

Либо это, либо с помощью метода создания ваших JLabels при необходимости.

+0

как я могу это сделать? совершенно новый для java – user2964762

Смежные вопросы