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

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

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

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

Q&A

解決済

1回答

1301閲覧

[初心者です] オセロプログラム中でエラーが出る(ActionListener関係だと思われます)

omikuji

総合スコア60

Java

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

0グッド

0クリップ

投稿2015/11/03 08:26

度々質問させて頂いております。
オセロプログラム中で、エラーが出るので質問させて頂きます。

(class Board)
public void actButton(){

for(int i=0; i<64; i++) { int x = i/8; int y = i%8; if(Piece.checkRev(x+1,y+1)) { pButton[x][y].addActionListener(this); } else { pButton[x][y].addActionListener(null); } }

(class Piece)
public static boolean checkRev(int sx, int sy){

int saveX = sx; int saveY = sy; int mx = -1; int my = -2; // for文で+1スタートするので-2から始める boolean result = true; for(int i=0; i<8; i++) { sx = saveX; sy = saveY; if(mx == 0 && my == -1) { my = my + 2; } else if(my != 1) { my++; } else { mx++; my = -1; } while(p[sx+mx][sy+my] != turn && p[sx+mx][sy+my] > 0) { sx = sx+mx; sy = sy+my; } if(p[sx+mx][sy+my] == turn){ result = true; }else{ result = false; } } return result;

}

このメソッドを書き加えたところ、ActButtonメソッドの
pButton[x][y].addActionListener(null);
の行でnullPointerExceptionのエラーが表示されます。

addActionListener(null)にするとボタンについているActionが無効になるという認識でしたが間違っているでしょうか?

念のため新しいメソッドを加える前の全文はこちら(https://teratail.com/questions/19068)に書かせて頂いております。

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

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

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

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

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

guest

回答1

0

ベストアンサー

addActionListener(null)にするとボタンについているActionが無効になるという認識でしたが間違っているでしょうか?

間違っています。
addActionListenerは、ActionListenerを追加するメソッドなので、
nullを追加しようとしていることになります。

pButton[x][y].removeActionListener(this);を使うことで、指定したActionListenerを削除できるので、
こちらを使ってください。

ただ、実現したいことからすると、pButton[x][y].setEnabled(true);pButton[x][y].setEnabled(false);
した方が良いかも知れません。

投稿2015/11/03 09:19

編集2015/11/03 10:03
eripong

総合スコア1546

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

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

omikuji

2015/11/03 13:44

そんな便利なメソッドがあったのですね。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問