Когда 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.