JAVAのマウスイベントの質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
non
記事: 1097
登録日時: 15年前

JAVAのマウスイベントの質問です。

#1

投稿記事 by non » 15年前

お久しぶりです。REGZA Phoneを昨年暮れに購入しました。となれば、やっぱりJAVAを勉強することになりました。
で、本を買いました。「Eclipse3.6ではじめる Javaプログラミング入門」 秀和システム です。
最初から、読み進めながら、プログラムを動かしているのですが、212ページのリスト3.26で、動作しません。
実行すると、ウインドウは表示されますが、マウスでクリックしたところの座標が表示されません。
イベントが発生していないように思えます。なお、付録についているCDのサンプルプログラムがあるのですが、これでも
動作しません。ということは、私がどこかの設定をミスしていることが考えられます。このページにくるまでは、すべて正常に
動作していました。マウスのプログラムはこのページが最初です。どういったことが考えられますか?
ソースは、下の通りです。

コード:

package jp.tuyano.eclipsebook3;

import java.awt.BorderLayout;
import java.awt.event.*;

import javax.swing.*;

/**
 * @author tuyano
 * 
 */
public class SampleApp extends JFrame {
	private static final long serialVersionUID = 1L;
	JLabel l1;

	public SampleApp() {
		this.setSize(300, 200);
		l1 = new JLabel();
		this.add(l1, BorderLayout.NORTH);
		this.addMouseListener(new MyMouseAdapter());
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new SampleApp();
	}

	class MyMouseAdapter extends MouseAdapter {
		public void mouseClicked(MouseEvent ev) {
			int x = ev.getX();
			int y = ev.getY();
			int n = ev.getClickCount();
			String str = "X:" + x;
			str += " Y:" + y;
			str += " click:" + n;
			l1.setText(str);
		}
	}
}
non

アバター
asd
記事: 319
登録日時: 15年前

Re: JAVAのマウスイベントの質問です。

#2

投稿記事 by asd » 15年前

検証済みではないですが、単純にSampleAppクラス(this)に対してラベルの配置を行うのではなく、
getContentPane()メソッドで描画対象ペインを取得して、そのペインに対してラベルを配置したら動作しませんか?

Eclipseを使っているのであれば、イベント内にブレークポイントを設定しておくと、イベントが発生したときに
ブレークポイントに引っかかるかどうかでイベントが発生しているか確認できます。

コード:

import java.awt.BorderLayout;
import java.awt.event.*;

import javax.swing.*;

/**
 * @author tuyano
 * 
 */
public class SampleApp extends JFrame {
	private static final long serialVersionUID = 1L;
	JLabel l1;

	public SampleApp() {
		this.setSize(300, 200);
		l1 = new JLabel();
		getContentPane().add(l1, BorderLayout.NORTH);//ここをthisからgetContentPane()に変えました
		this.addMouseListener(new MyMouseAdapter());
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new SampleApp();
	}

	class MyMouseAdapter extends MouseAdapter {
		public void mouseClicked(MouseEvent ev) {
			int x = ev.getX();
			int y = ev.getY();
			int n = ev.getClickCount();
			String str = "X:" + x;
			str += " Y:" + y;
			str += " click:" + n;
			l1.setText(str);
		}
	}
}
Advanced Supporting Developer
無理やりこじつけ(ぉ

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: JAVAのマウスイベントの質問です。

#3

投稿記事 by ISLe » 15年前

JRE(Java Runtime Environment:Java実行環境)のバージョンが古いのではないでしょうか。
最近(いつからだったかは失念)ではJFrameのaddメソッドはContentPaneに転送されるのでgetContentPaneは不要になりました。
本に付属のCDに入っているJDK(&公開JRE)はインストールしましたか?
古いバージョンがインストールしてあるなら特に理由がない限り最新版以外はアンインストールすると良いと思います。

non
記事: 1097
登録日時: 15年前

Re: JAVAのマウスイベントの質問です。

#4

投稿記事 by non » 15年前

asdさんのプログラムでは、変化ありませんでした。ブレークをつけたら、予想通り、イベントが発生していません。

ISLeさん
jdk1.6.0_22をインストールしています。本についてきているのは、jdk1.6.0_21です。

なお、Windows7 64Bitです。
non

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: JAVAのマウスイベントの質問です。

#5

投稿記事 by ISLe » 15年前

non さんが書きました:ISLeさん
jdk1.6.0_22をインストールしています。本についてきているのは、jdk1.6.0_21です。

なお、Windows7 64Bitです。
ウチはWindows7(x64)のJRE1.6.0_23で質問に書かれたコードが動いてます。

古いバージョンのJDKやJREはインストールされていないですか。
JDKをインストールするときに公開JREもインストールしましたか。
『コントロールパネル』の『プログラムのアンインストール』を開いて確認してみてください。

あと環境変数のCLASSPATHを設定してませんか?
設定しているなら誤動作の原因になるので削除してください。

non
記事: 1097
登録日時: 15年前

Re: JAVAのマウスイベントの質問です。

#6

投稿記事 by non » 15年前

ISLeさん
指摘の箇所はすべて問題ないように思えました。
やむなく、すべて、インストールをやり直しました。結果、うまく動くようになりました。
原因はわかりませんが、お世話になりました。

ところで、ISleさんは64ビットのJDKを入れておられるのでしょうか?
私は、現在32ビット版を使用しております。
non

アバター
asd
記事: 319
登録日時: 15年前

Re: JAVAのマウスイベントの質問です。

#7

投稿記事 by asd » 15年前

ISLe さんが書きました:JRE(Java Runtime Environment:Java実行環境)のバージョンが古いのではないでしょうか。
最近(いつからだったかは失念)ではJFrameのaddメソッドはContentPaneに転送されるのでgetContentPaneは不要になりました。
本に付属のCDに入っているJDK(&公開JRE)はインストールしましたか?
古いバージョンがインストールしてあるなら特に理由がない限り最新版以外はアンインストールすると良いと思います。
そうだったのですか。それは知りませんでした(ノ∀`)
となるとイベントリスナーが登録されているにも関わらずイベントが発生していないということですね。
Advanced Supporting Developer
無理やりこじつけ(ぉ

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: JAVAのマウスイベントの質問です。

#8

投稿記事 by ISLe » 15年前

原因がはっきりしないのが気持ち悪いですが、動くようになってよかったですね。
non さんが書きました:ところで、ISleさんは64ビットのJDKを入れておられるのでしょうか?
私は、現在32ビット版を使用しております。
32ビット版→64ビット版の順にインストールして両方使ってます。
IEやEclipseは32ビット版を使っているので32ビット版も必要なのです。
Javaアプリケーションを直接動かすときは64ビット版で動作することになります。
コマンドプロンプトからコンパイラなど使うことが多くせっかくなので使えるときは64ビット版を使いたいと思って入れてます。

"C:\Program Files (x86)\Java\jre6\bin\java.exe"(javaw.exe)を使って起動すると32ビット、
"C:\Program Files\Java\jre6\bin\java.exe"(javaw.exe)を使って起動すると64ビットで動作します。

non
記事: 1097
登録日時: 15年前

Re: JAVAのマウスイベントの質問です。

#9

投稿記事 by non » 15年前

ISLeさん
両方入れてもバッティングしないのですね。情報ありがとうございました。
non

閉鎖

“C言語何でも質問掲示板” へ戻る