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

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

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

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

Q&A

解決済

2回答

1698閲覧

変数の受け渡しについて

monolith123

総合スコア20

Java

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

0グッド

0クリップ

投稿2018/06/12 06:10

前提・実現したいこと

JFrameを表示させたいのですが変数の受け渡しがわからず進みません。
アドバイスお願いします。
ネットや回答でもらったソースコードを改造して作成しています。

発生している問題・エラーメッセージ

jbを変数に解決できません。

該当のソースコード

java

1import java.awt.GridLayout; 2import java.awt.event.ActionEvent; 3 4import javax.swing.JButton; 5import javax.swing.JFrame; 6 7public class Button { 8 public static void main(String[] args) { 9 new Button(); 10 } 11 12 String[] marks = new String[] { "●", "◯" }; 13 14 Button() { 15 JFrame jf; 16 jf = new JFrame(); 17 jf.setLayout(new GridLayout(8,8)); 18 19 JButton[][] jb = new JButton[8][8]; // 盤面の配列を作る 20 for(int i = 0; i < jb.length; i++) { 21 for(int j = 0; j < jb.length; j++) { 22 jb[i][j] = new JButton(); 23 jb[i][j].addActionListener(null); 24 jb[i][j].setText(" "); 25 jf.add(jb[i][j]); 26 } 27 } 28 jf.pack(); 29 jf.setVisible(true); 30 for (int i = 0; i < jb.length; i++) { 31 int y = i / 8; 32 int x = i % 8; 33 JButton btn = jb[y][x] = new JButton(""); 34 btn.addActionListener(ev -> onClick(ev, x, y)); // lambda式を使う 35 } 36 } 37 int teban = 1; 38 39 // どの駒のボタンが押されたかx, yにそのまま渡される 40 void onClick(ActionEvent ev, int x, int y) { 41 // 既に打たれてるところには打てません 42 if (!jb[y][x].getText().isEmpty()) return; // 無視する 43 44 // 手番を反転する 45 teban = 1 - teban; 46 String mark = marks[teban]; // 手番に従い"●", "◯"のどちらかを設定 47 jb[y][x].setText(mark); 48 49 // ここから判定 50 // 左側に連続して同じ手番のマークのボタンがいくつ並んでいるかを調べる 51int count = 1; 52for (int xx = x - 1; xx >= 0 && jb[y][xx].getText().equals(mark); xx--) { 53 count++; 54} 55// 右側も同様 56for (int xx = x + 1; xx >= 0 && jb[y][xx].getText().equals(mark); xx--) { 57 count++; 58} 59if (count >= 5) { 60 // この手番の勝ち! 61 System.out.println("勝利"); 62} 63 64// 次は縦 65count = 1; 66 67 68// 次は右斜め 69count = 1; 70 71 72// 最後に左斜め 73count = 1; 74 75 } 76} 77

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

フレームの作成と表示 - JavaDrive

フレームの表示

JFrameクラスからオブジェクトを作成した場合、デフォルトではフレームは非表示となっています。
フレームを表示するにはJFrameクラスの親クラスであるWindowクラスで定義されているsetVisibleメソッドを使います。

 

引数にtrueを指定すると対象のフレームが表示されます。
実際の使い方は次のようになります。

JFrame frame = new JFrame("タイトル"); frame.setVisible(true);

これでフレームが画面上に表示されます。

 
ボタンの作成と表示文字列の設定 - JavaDrive

ボタンを作成するにはJButtonクラスを使用します。

投稿2018/06/12 06:16

編集2018/06/12 06:19
tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

JButton[][] jb = new JButton[8][8];をメソッド外に記述したらエラーが消えました。
単純ミスでした。

投稿2018/06/12 07:08

monolith123

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問