前提・実現したいこと
神経衰弱のプログラムを作っていて、トランプ一枚一枚をインスタンスとして作りました。
トランプインスタンス一つ一つがラベルを持つように作り、個別で削除したりできるようにするため、number変数を作り、それを元にラベルを作るようにしたのですが↓のようなエラーが出てしまいました。
ラベル名は変数だとダメなのでしょうか?
発生している問題・エラーメッセージ
D:\JavaGame0\neurasthenia>javac *.java Trump.java:56: エラー: 文ではありません JLabel this.name = new JLabel(icon); ^ Trump.java:56: エラー: ';'がありません JLabel this.name = new JLabel(icon);
該当のソースコード
Turmp.java
java
1import java.util.*; 2import javax.swing.*; 3 4public class Trump { 5 6 static int counter; 7 8 static int position = 1; 9 10 int direction; 11 12 public int number; 13 14 String name = 0; 15 16 17 public int counterMemo; 18 19 public int positionMemo; 20 21 String picture; 22 23 public void startAdd() { 24 25 counter++; 26 27 if (counter <= 2) { 28 position++; 29 counter--; 30 } 31 32 counterMemo = counter; 33 positionMemo = position; 34 add(); 35 } 36 37 public void add() { 38 39 if (direction == 0) { 40 picture = "card_back.png"; 41 direction = 1; 42 }else{ 43 switch (this.number) { 44 case 1: 45 picture = "card_spade_01.png"; 46 break; 47 case 2: 48 picture = "card_spade_02.png"; 49 break; 50 } 51 direction = 0; 52 } 53 54 ImageIcon icon = new ImageIcon(picture); 55 56 JLabel this.name = new JLabel(icon); 57 58 NEFrame.panel.add(this.name); 59 60 name.setBounds(counterMemo * 200, position * 100, 200, 293); 61 62 } 63 64 public void reverse() { 65 66 this.disappear(); 67 68 this.add(); 69 } 70 71 public void disappear() { 72 73 NEFrame.panel.remove(this.name); 74 75 } 76 77 Trump(int number, String name) { 78 79 this.number = number; 80 81 this.name = name; 82 83 } 84 85}//endturmp 86
NEFrame.java
java
1import java.awt.*; 2import javax.swing.*; 3import java.util.*; 4 5/** 6 * HelloJavaGame 7 */ 8public class NEFrame extends JFrame{ 9 10 public static NEPanel panel = null; 11 12 public static Trump[] trumps = new Trump [4]; 13 14 /** 15 * ここからはじまります。*/ 16 17 18 public static void main(String[] args){ 19 NEFrame hg = new NEFrame(); 20 21 int q; 22 int w = 0; 23 for (q = 0; q <= trumps.length / 2; q++) { 24 trumps[w] = new Trump (q, "a" + String.valueOf(w)); 25 w++; 26 trumps[w + 1] = new Trump (q, "a" + String.valueOf(w)); 27 w++; 28 } 29 30 31 addTrump(); 32 } 33 34 public static void addTrump() { 35 36 37 for (int e = trumps.length - 1; e > 0; e--) { 38 int r = (int) (Math.random() * (e + 1)); 39 Trump tmp = trumps[e]; 40 trumps[e] = trumps[r]; 41 trumps[r] = tmp; 42 } 43 int u; 44 for (u = 0; u <= trumps.length; u++) { 45 u--; 46 trumps[u].startAdd(); 47 u++; 48 } 49 50 } 51 52 public static void clear() { 53 54 55 56 panel.resetPoint(); 57 58 int i; 59 for (i = 0; i < trumps.length; i++) { 60 i--; 61 trumps[i].disappear(); 62 i++; 63 } 64 65 addTrump(); 66 } 67 68 69 70 71 /** 72 * コンストラクタ 73 */ 74 public NEFrame(){ 75 76 // フレームを生成 77 JFrame frame = new JFrame("neurasthenia"); 78 79 // ×ボタンが押されたら、終了する 80 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 81 // レイアウト設定 82 frame.setLayout(new BorderLayout()); 83 84 // パネルを生成 85 JPanel panel = new JPanel(); 86 87 // パネルサイズを設定 88 panel.setPreferredSize(new Dimension(1024, 640)); 89 // レイアウト設定 90 panel.setLayout(null); 91 92 // フレームにパネルを設定 93 frame.setContentPane(panel); 94 95 96 // フレームを表示 97 frame.setVisible(true); 98 // サイズを最適化する 99 frame.pack(); 100 101 } // end HelloJavaGame 102 103 104 105 106 107} 108
NEPanel.java
java
1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4 5/** 6 * パネルクラス 7 */ 8public class NEPanel extends JPanel { 9 10 private NEMouseAdapter mgma = null; 11 12 private int x = 0; 13 private int y = 0; 14 15 public static int point = 0; 16 17 int counter2 = 0; 18 19 int counter2Pre = 0; 20 21 /** 22 * コンストラクタ 23 */ 24 public NEPanel() { 25 26 // スーパークラスを呼び出す 27 super(); 28 29 // パネルサイズ 30 super.setPreferredSize(new Dimension(800, 600)); 31 // レイアウト設定 32 super.setLayout(null); 33 34 // マウスアダプタを生成 35 mgma = new NEMouseAdapter(); 36 // パネルにマウスリスナーを追加する 37 super.addMouseListener(mgma); 38 39 } // end MGPanel 40 41 public static void resetPoint() { 42 43 point = 0; 44 45 } 46 47 48 /** 49 * マウスアダプタ 50 */ 51 private class NEMouseAdapter extends MouseAdapter { 52 53 /** 54 * マウスがクリックされた時に呼ばれます 55 */ 56 57 58 public void mouseClicked(MouseEvent me){ 59 60 61 62 // 場所を記憶する 63 x = me.getX(); 64 y = me.getY(); 65 66 for (counter2 = 0; counter2 <= NEFrame.trumps.length; counter2++) { 67 68 if (x >= NEFrame.trumps[counter2].counterMemo * 200 - 200 && x <= NEFrame.trumps[counter2].counterMemo * 200 && y >= NEFrame.trumps[counter2].positionMemo * 100 - 293 && y <= NEFrame.trumps[counter2].position * 100) { 69 70 NEFrame.trumps[counter2].reverse(); 71 72 if (counter2Pre == 0) { 73 74 counter2Pre = counter2; 75 76 }else{ 77 78 if (NEFrame.trumps[counter2Pre].number == NEFrame.trumps[counter2].number) { 79 80 NEFrame.trumps[counter2].disappear(); 81 NEFrame.trumps[counter2Pre].disappear(); 82 83 point++; 84 85 if (point == NEFrame.trumps.length / 2) { 86 87 NEFrame.clear(); 88 89 } 90 }else{ 91 92 NEFrame.trumps[counter2].reverse(); 93 NEFrame.trumps[counter2Pre].reverse(); 94 95 96 } 97 counter2Pre = 0; 98 } 99 } 100 } 101 102 103 } // end mouseClicked 104 105 } // end NEMouseAdapter 106 107} 108
試したこと
補足情報(FW/ツールのバージョンなど)
ファイル構成としては、以下のJavaファイルと画像を一つのフォルダ内に設置してコンパイル実行しています。
NEPanel.java
NEFrame.java
Trump.java
card_back.png
card_spade_01.png
card_spade_02.png
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/13 07:43
2021/08/13 11:19
2021/08/13 12:42