2017-01-02 4 views
2

Ich erstelle ein Tic Tac Toe GUI-basiertes Spiel in Java und kämpfe mit der Verwendung von 2D-Arrays mit JOptionPane. Bisher konnte ich die Schaltflächen erstellen zur Auswahl:Java JOptionPane

import java.awt.GridLayout; 
import javax.swing.*; 

public class YourHEad { 

    public static void main(String[] args) { 
    JFrame frame = new JFrame("GridLayout Test"); 
    frame.setLayout(new GridLayout(4, 4)); 

StringBuilder sb = new StringBuilder(); 
sb.append("<html>"); 

String[][] seats = new String [4][4]; 
String alpha = "ABCD"; 

for (int i=0; i<4; i++){ 

    String letter = Character.toString(alpha.charAt(i)); 

    for (int j=0; j<4; j++){ 

     String number = Integer.toString(j+1); 
     seats [i][j]=letter+number+" "; 

    } 
} 

for (int i = 0; i < 4; i++){ 
    for (int j = 0; j < 4; j++){ 
     frame.add(new JButton(seats[i][j])); 
    } 
} 

frame.pack(); 
frame.setVisible(true); 

if(new JButton(seats[0][0]).getModel().isPressed()){ 
    System.out.println("the button is pressed"); 
} 

}} 

Wie Sie aus den letzten Zeilen von Code sehen können, ich versuche, herauszufinden, wie zu sagen, wenn die Taste gedrückt wird, so dass, wenn Zum Beispiel, der Benutzer klickt auf 'A1', (also 0,0), dann kann das Programm Text ausgeben (den ich ändern werde, um im JOptionPane-Format zu sein).

Ich hoffe, ich habe es in Ordnung erklärt.

Antwort

-1

Hoffnung, diese

public class YourHEad 
{ 

    public static void main(String[] args) 
    { 
    final JFrame frame = new JFrame("GridLayout Test"); 
    frame.setLayout(new GridLayout(4, 4)); 

    StringBuilder sb = new StringBuilder(); 
    sb.append("<html>"); 

    String[][] seats = new String [4][4]; 
    String alpha = "ABCD"; 

    for (int i=0; i<4; i++){ 

     String letter = Character.toString(alpha.charAt(i)); 

     for (int j=0; j<4; j++){ 

      String number = Integer.toString(j+1); 
      seats [i][j]=letter+number+" "; 

     } 
    } 

for (int i = 0; i < 4; i++){ 
    for (int j = 0; j < 4; j++){ 
     JButton button= new JButton(seats[i][j]); 
     button.addMouseListener(new MouseAdapter() 
       { 
        public void mouseClicked(MouseEvent e) 
        { 
         JOptionPane.showMessageDialog(frame, ((JButton)(e.getSource())).getText()+" is Pressed"); 
        } 
       }); 
     frame.add(button); 
    } 
} 

frame.pack(); 
frame.setVisible(true); 

} 
} 
+0

leider helfen wird, verstehe ich nicht wirklich, wie das funktioniert !! –

2
for (int i = 0; i < 4; i++){ 
    for (int j = 0; j < 4; j++){ 
     JButton jb = new JButton(seats[i][j]); 
     jb.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println(((JButton)(e.getSource())).getText()); 
      } 
     }); 
     frame.add(jb); 
    } 
} 

In Java können Sie ActionListeners verwenden. Sobald ein Listener hinzugefügt wurde, wartet er auf eine Aktion, und wenn eine Aktion ausgeführt wird, ruft er die Methode #actionPerformed auf, die Sie überschreiben müssen.