Когда JButton Disable, текст, показанный в JButton (для некоторых выбранных)

Я хочу скрыть текст в JButton. Когда пользователь нажимает JButton, текст будет отображаться.

Это требование для моей игры (пользователю нужно найти "хит" в этой кнопке): http://gyazo.com/73475fc9725bbc750463dbefc55d55ad

Теперь мой код отображается таким образом (я хочу, чтобы они спрятались внутри кнопки) http://gyazo.com/d7ac57eb287aa8601067b87d0755cfc9

Случайный класс:

for (int y = 0; y < x; y++) { int randomThree = new java.util.Random().nextInt(gridNo); int randomThree2 = new java.util.Random().nextInt(gridNo); if (ButtonArray[randomThree][randomThree2].getText() != "hit") { // to prevent have same position hit ButtonArray[randomThree][randomThree2].setText("hit"); }

Основной класс: Действие кнопки:

ButtonArray[row][col].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ButtonArray[r][c].setEnabled(false); if ( ButtonArray[r][c].getText().equalsIgnoreCase("hit")) { game.incCountHit(1); if (game.getCountHit() == 3) { startBtn.setText("Restart Game "); // set text } } } });randHit.randomNo();
2 ответа

Для чего-то вроде умывальника, у вас есть что-то вроде двух массивов, один из которых представляет собой массив кнопок, а один - это "контентный" массив.

Одна кнопка запускается/нажата, вы определяете индекс в массиве кнопок кнопки, которая была нажата, и используя этот индекс, найдите массив содержимого для содержимого кнопок.

Затем вы установили текст кнопок в значение текста данного элемента в массиве "content".

Более простым решением было бы использовать какую-то Map привязанную к JButton которая содержала значение для этой кнопки, это облегчило бы поиск значения.


Вы можете поместить этот код в событие щелчка кнопки, которую вы намереваетесь показать желаемый текст.

Хотя ваша цель не очень ясна, я думаю, вам нужно это:

if(jButton1.isEnabled()==false){ jButton1.setText("HIT"); }

Изменить в соответствии с вашим кодом:

Первоначально установите цвет переднего плана кнопки так же, как цвет фона кнопки.

if ( ButtonArray[r][c].getText().equalsIgnoreCase("hit")) { game.incCountHit(1); ButtonArray[r][c].setForeground(Color.black); if (game.getCountHit() == 3) { startBtn.setText("Restart Game "); // set text } }

Изменить:

Предположим, что новый массив для хранения текста с нужными параметрами rowSize и colSize будет таким же, как ButtonArray.

String[][] newArray = new String [rowSize][colSize];

Случайный класс:

for (int y = 0; y < x; y++) { int randomThree = new java.util.Random().nextInt(gridNo); int randomThree2 = new java.util.Random().nextInt(gridNo); if (newArray[randomThree][randomThree2] != "hit") { newArray[randomThree][randomThree2]="hit"; } }

Основной класс: Действие кнопки:

ButtonArray[row][col].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ButtonArray[r][c].setEnabled(false); if ( newArray[r][c].equalsIgnoreCase("hit")) { game.incCountHit(1); if (game.getCountHit() == 3) { startBtn.setText("Restart Game "); // set text } } } });randHit.randomNo();

licensed under cc by-sa 3.0 with attribution.