###前提・実現したいこと
現在JavaのSwingにてあるゲームのテストクラスを作っています。その過程で升目状に配置されたボタンが押されたらターンを切り替えてその表示をJLabelで画面上部に表示したいと考えてるですがうまくいきません。ゲームは丸罰ゲームのような二人で行う手番性のものです。
ターンが切り替わらない理由と説明をどうかお願いします。また、当方初心者のためほかにも改善点があれば指摘をお願いします。
###発生している問題・エラーメッセージ
ボタンを押してもターンの表示が切り替わりません。
###該当のソースコード
java
1package game_system; 2 3import java.awt.Color; 4import java.awt.GridLayout; 5import java.awt.event.ActionEvent; 6import java.awt.event.ActionListener; 7import java.util.ArrayList; 8 9import javax.swing.JButton; 10import javax.swing.JFrame; 11import javax.swing.JLabel; 12import javax.swing.JPanel; 13import javax.swing.border.BevelBorder; 14 15public class TestFrame extends JFrame implements ActionListener{ 16 17 static JPanel backpane; 18 static boolean play_turn; 19 static ArrayList<ArrayList<JButton>> y_coordinate = new ArrayList<ArrayList<JButton>>(); 20 21 public static void main(String args[]){ 22 TestFrame mainframe = new TestFrame(); 23 /* 24 * 画面生成 25 */ 26 //親パネル 27 backpane = new JPanel(); 28 backpane.setLayout(null); 29 backpane.setBackground(Color.GREEN); 30 //ターン表示のためのパネル 31 JLabel tellturn = mainframe.CreateLabel(); 32 backpane.add(tellturn); 33 34 //升目パネル 35 JPanel screen = new JPanel(); 36 screen.setBounds(0,200,500, 500); 37 screen.setLayout(new GridLayout(20,20,0,0)); 38 for(int i = 0;i<20;i++){ 39 ArrayList<JButton> x_coordinate = new ArrayList<JButton>(); 40 for(int t = 0;t<20;t++){ 41 JButton cell = CreateCell(i,t); 42 cell.addActionListener(mainframe); 43 screen.add(cell); 44 x_coordinate.add(cell); 45 } 46 y_coordinate.add(x_coordinate); 47 } 48 backpane.add(screen); 49 mainframe.add(backpane); 50 mainframe.setVisible(true); 51 } 52 /*コンストラクタ*/ 53 public TestFrame(){ 54 super("TestGame"); 55 setDefaultCloseOperation(EXIT_ON_CLOSE); 56 setSize(506, 728); 57 setResizable(false); 58 play_turn = true; //初期値(初期ターン) 59 60 } 61 public JLabel CreateLabel(){ 62 //ターンを表示するためのラベル 63 String text; 64 if(play_turn == true){ 65 text = "赤"; 66 }else{ 67 text = "青"; 68 } 69 JLabel jl = new JLabel("現在はプレイヤー"+text+"のターンです"); 70 jl.setBorder(new BevelBorder(BevelBorder.RAISED, Color.white, Color.black)); 71 jl.setBounds(0, 0, 500, 195); 72 jl.setBackground(Color.WHITE); 73 return jl; 74 } 75 public static JButton CreateCell(int x,int y){ 76 JButton btn = new JButton(); 77 btn.setSize(10, 10); 78 btn.setActionCommand(x+"-"+y); 79 return btn; 80 } 81 /* (非 Javadoc) 82 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) 83 * ボタン処理 84 */ 85 @Override 86 public void actionPerformed(ActionEvent e) { 87 String coordinate = e.getActionCommand(); 88 for(int k=0;k<20;k++){ 89 for(int j = 0;j<20;j++){ 90 String number = k+"-"+j; 91 if(coordinate.equals(number)){ 92 Color player_c; 93 if(play_turn == true){ 94 player_c = Color.RED; 95 play_turn = false; 96 JLabel jl = CreateLabel(); 97 backpane.add(jl); 98 }else{ 99 player_c = Color.BLUE; 100 play_turn = true; 101 JLabel jl = CreateLabel(); 102 backpane.add(jl); 103 } 104 y_coordinate.get(k).get(j).setBackground(player_c); 105 } 106 } 107 } 108 109 return; 110 } 111 112}
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
開発環境はEclipseです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/04 04:03
2017/08/04 04:29
2017/08/04 05:39
2017/08/04 06:25