質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

解決済

labelの名前を変数にすることは可能ですか。

TOMATO1235
TOMATO1235

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

3回答

0評価

0クリップ

408閲覧

投稿2021/08/13 05:20

前提・実現したいこと

神経衰弱のプログラムを作っていて、トランプ一枚一枚をインスタンスとして作りました。
トランプインスタンス一つ一つがラベルを持つように作り、個別で削除したりできるようにするため、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

import java.util.*; import javax.swing.*; public class Trump { static int counter; static int position = 1; int direction; public int number; String name = 0; public int counterMemo; public int positionMemo; String picture; public void startAdd() { counter++; if (counter <= 2) { position++; counter--; } counterMemo = counter; positionMemo = position; add(); } public void add() { if (direction == 0) { picture = "card_back.png"; direction = 1; }else{ switch (this.number) { case 1: picture = "card_spade_01.png"; break; case 2: picture = "card_spade_02.png"; break; } direction = 0; } ImageIcon icon = new ImageIcon(picture); JLabel this.name = new JLabel(icon); NEFrame.panel.add(this.name); name.setBounds(counterMemo * 200, position * 100, 200, 293); } public void reverse() { this.disappear(); this.add(); } public void disappear() { NEFrame.panel.remove(this.name); } Trump(int number, String name) { this.number = number; this.name = name; } }//endturmp

NEFrame.java

java

import java.awt.*; import javax.swing.*; import java.util.*; /** * HelloJavaGame */ public class NEFrame extends JFrame{ public static NEPanel panel = null; public static Trump[] trumps = new Trump [4]; /** * ここからはじまります。*/ public static void main(String[] args){ NEFrame hg = new NEFrame(); int q; int w = 0; for (q = 0; q <= trumps.length / 2; q++) { trumps[w] = new Trump (q, "a" + String.valueOf(w)); w++; trumps[w + 1] = new Trump (q, "a" + String.valueOf(w)); w++; } addTrump(); } public static void addTrump() { for (int e = trumps.length - 1; e > 0; e--) { int r = (int) (Math.random() * (e + 1)); Trump tmp = trumps[e]; trumps[e] = trumps[r]; trumps[r] = tmp; } int u; for (u = 0; u <= trumps.length; u++) { u--; trumps[u].startAdd(); u++; } } public static void clear() { panel.resetPoint(); int i; for (i = 0; i < trumps.length; i++) { i--; trumps[i].disappear(); i++; } addTrump(); } /** * コンストラクタ */ public NEFrame(){ // フレームを生成 JFrame frame = new JFrame("neurasthenia"); // ×ボタンが押されたら、終了する frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // レイアウト設定 frame.setLayout(new BorderLayout()); // パネルを生成 JPanel panel = new JPanel(); // パネルサイズを設定 panel.setPreferredSize(new Dimension(1024, 640)); // レイアウト設定 panel.setLayout(null); // フレームにパネルを設定 frame.setContentPane(panel); // フレームを表示 frame.setVisible(true); // サイズを最適化する frame.pack(); } // end HelloJavaGame }

NEPanel.java

java

import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * パネルクラス */ public class NEPanel extends JPanel { private NEMouseAdapter mgma = null; private int x = 0; private int y = 0; public static int point = 0; int counter2 = 0; int counter2Pre = 0; /** * コンストラクタ */ public NEPanel() { // スーパークラスを呼び出す super(); // パネルサイズ super.setPreferredSize(new Dimension(800, 600)); // レイアウト設定 super.setLayout(null); // マウスアダプタを生成 mgma = new NEMouseAdapter(); // パネルにマウスリスナーを追加する super.addMouseListener(mgma); } // end MGPanel public static void resetPoint() { point = 0; } /** * マウスアダプタ */ private class NEMouseAdapter extends MouseAdapter { /** * マウスがクリックされた時に呼ばれます */ public void mouseClicked(MouseEvent me){ // 場所を記憶する x = me.getX(); y = me.getY(); for (counter2 = 0; counter2 <= NEFrame.trumps.length; counter2++) { 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) { NEFrame.trumps[counter2].reverse(); if (counter2Pre == 0) { counter2Pre = counter2; }else{ if (NEFrame.trumps[counter2Pre].number == NEFrame.trumps[counter2].number) { NEFrame.trumps[counter2].disappear(); NEFrame.trumps[counter2Pre].disappear(); point++; if (point == NEFrame.trumps.length / 2) { NEFrame.clear(); } }else{ NEFrame.trumps[counter2].reverse(); NEFrame.trumps[counter2Pre].reverse(); } counter2Pre = 0; } } } } // end mouseClicked } // end NEMouseAdapter }

試したこと

補足情報(FW/ツールのバージョンなど)

ファイル構成としては、以下のJavaファイルと画像を一つのフォルダ内に設置してコンパイル実行しています。

NEPanel.java
NEFrame.java
Trump.java
card_back.png
card_spade_01.png
card_spade_02.png

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。