2017-01-02 4 views
2

私はJavaでTic Tac Toe GUIベースのゲームを作成しており、JOptionPaneで2D配列を使用することに苦労しています。もしように私は、ボタンが押されたときに伝えるためにどのように動作するようにしようとしています、あなたは、コードの最後の行から見ることができるように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"); 
} 

}} 

:これまでのところ私は、から選択するボタンを作成することができましたたとえば、ユーザーが 'A1'(したがって0,0)をクリックすると、プログラムはテキストを出力できます(これはJOptionPane形式に変更されます)。

私はそれを大丈夫に説明しました。

答えて

-1

希望、これは

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

は申し訳ありませんが、私は本当にこれがどのように動作するか理解していないのに役立ちます! –

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); 
    } 
} 

Javaでは、ActionListenersを使用できます。リスナーが追加されると、それはアクションをリッスンし、実行されたアクションがあるときは、オーバーライドする必要がある#actionPerformedメソッドを呼び出します。