В настоящее время вы используете один и тот же ActionListener для каждой кнопки со статической строкой в качестве сообщения, следовательно, все кнопки будут отображать одно и то же сообщение.
В следующем коде я создал отдельный внутренний класс с именем ButtonHandler для ActionListener, который позволяет передавать сообщение в конструкторе.Это позволит вам установить отдельное сообщение для каждой кнопки.Класс jep больше не нуждается в реализации ActionListener в этом примере, поскольку он теперь обрабатывается отдельным классом.
Простое решение, позволяющее каждой кнопке отображать что-то уникальное, - это заранее сохранять значения в массиве.Здесь я заполняю массив String разными именами цветов, а затем использую эти значения для назначения сообщений каждой кнопке.
Кроме того, я изменил условие в вашем внешнем цикле for на r <6, потому что в противном случае он не заполнил бы сетку 6x6 </p>
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class jep {
public JButton[][] t = new JButton[6][6];
public static void main(String[] args) {
new jep();
}
static int n = 100;
public jep() {
JFrame frame = new JFrame("Jeopardy");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1920, 1080);
frame.setLayout(new GridLayout(6, 6));
frame.setVisible(true);
String[][] messages = new String[6][6];
for(int r=0; r<6; r++) {
for(int c=0; c<6; c++) {
switch(c) {
case 0:
messages[r][c] = "RED";
break;
case 1:
messages[r][c] = "ORANGE";
break;
case 2:
messages[r][c] = "YELLOW";
break;
case 3:
messages[r][c] = "GREEN";
break;
case 4:
messages[r][c] = "BLUE";
break;
case 5:
messages[r][c] = "INDIGO";
break;
}
}
}
for (int r = 0; r < 6; r++) {
for (int c = 0; c < 6; c++) {
String vakue = String.valueOf(n);
t[r][c] = new JButton(vakue);
t[r][c].setBackground(Color.BLUE);
t[r][c].setForeground(Color.YELLOW);
t[r][c].addActionListener(new ButtonHandler(messages[r][c]));
frame.add(t[r][c]);
}
n = n + 300;
}
}
private class ButtonHandler implements ActionListener {
private String message;
public ButtonHandler(String message) {
this.message = message;
}
@Override
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showInputDialog(null, message);
}
}
}
Надеюсь, это поможет!
Редактировать: объединенные примеры для краткости ...