おはようございます。javaプログラムについて質問致します、宜しくお願いします。
windowをリサイズした時にwindowのサイズを取得するこーどを書きましたが、
「int ws」にうまく値が入りません、イベントは取っているのです、原因が分かりません。
「Demension()」の使い方が間違っているような気がするのですが、どこがどのように
間違っているのかが、理解できません。
以上宜しくお願い致します。
====================================================
public class Resize_Test extends JFrame
{
private static final long serialVersionUID = 1L;
Resize_Test()
{
this.setTitle("Resize_Test");
this.setSize(200, 200); //フレームの初期サイズ
this.setLocationRelativeTo(null); //フレームを画面の中央に表示
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//フレームにComponentListenerを登録
this.addComponentListener( new ComponentAdapter_JFrame() );
}
public static void main(String[] args)
{
Resize_Test jframe = new Resize_Test();
jframe.setVisible(true); //フレームの表示
}
public void paint( Graphics g )
{
super.paint(g); //スーパークラスから描画処理
g.drawString("test", 30, 50); //文字の描画
g.drawLine(0, 0, this.getWidth(), this.getHeight()); //線 の描画
}
class ComponentAdapter_JFrame extends ComponentAdapter
{
//フレームのサイズが変更されたとき
public void componentResized(ComponentEvent e)
{
Resize_Test.this.repaint(); //フレームをリペイント
int ws = ( new Dimension()).getSize().width ;
System.out.println("ws = " + ws ) ;
}
}
}
No.1ベストアンサー
- 回答日時:
当たり前ですね、 new Dimension() では幅も高さも 0 のデータを作るだけですから。
http://docs.oracle.com/javase/jp/6/api/java/awt/ …
おそらく質問者様はイベントハンドラの中で Dimension を作れば Java が気を利かせてイベントを起こしたコンポーネントのサイズを入れてくれると思ったのかもしれませんが、残念ながらそんなややこしいことは Java はやってくれません。
サイズを知りたければそのイベントを起こしたコンポーネントに聞けばいいのです。
http://docs.oracle.com/javase/jp/6/api/java/awt/ …
No.2
- 回答日時:
……っと失礼、このサイトの自動リンクは括弧を認識しないようです。
No.1 の回答の外部リンクを先頭h抜かしで再記します。
一番目:ttp://docs.oracle.com/javase/jp/6/api/java/awt/Dimension.html#Dimension()
二番目:ttp://docs.oracle.com/javase/jp/6/api/java/awt/event/ComponentEvent.html#getComponent()
hitomuraさん、回答有り難うございます。
以下のように修正しましたが、やはりエラーがでます。
最近Javaの勉強を始めたばかりで、参考書などを見ながら我流の勉強が原因だとは思うのですが、、、、、一体どこが間違いなのか教えて貰えないでしょうか。
宜しくお願いします。
======================================
class ComponentAdapter_JFrame extends ComponentAdapter
{
//フレームのサイズが変更されたとき
public void componentResized(ComponentEvent e)
{
Resize_Test.this.repaint(); //フレームをリペイント
// int ws = ( new Dimension()).getSize().width ;
System.out.println("ws = " + ((Dimension) e.getSource()).getSize().width) ;
}}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
[C#.net]スレッド化された別フ...
-
コンボボックスを使う時の警告
-
Junitテストでvoid戻り値メッソ...
-
C# タスク非表示でタイトルバー...
-
C#で、あるクラスのメンバーす...
-
GetDIBits関数の使い方について
-
C# 半角カナの文字化けについて
-
Runtime#proccessのwait
-
C# DataGridView列カスタマイズ
-
Javascript @public
-
C#でのWNetAddConnection3の使...
-
ユーザーコントロールを動的に...
-
C# タスクバーを隠したフォーム...
-
struts2のchainで値の受け渡し...
-
配列の受け渡し
-
長方形を描いて、それを移動さ...
-
ボタンの複数割り当てについて
-
JSPやサーブレットでSystem.out...
-
Java配列でNullPointerExceptio...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
C#でのWNetAddConnection3の使...
-
Junitテストでvoid戻り値メッソ...
-
ボタンの複数割り当てについて
-
C# DataGridView列カスタマイズ
-
C# WinForm のDataGridView Cel...
-
C# visibleプロパティをfalseに...
-
[C#.net]スレッド化された別フ...
-
C# 矢印キーの取得
-
unityでのC++エラーの原因がわ...
-
C#から、C++で作成したdll内の...
-
コンボボックスを使う時の警告
-
JavaFXでの表内のチェックボッ...
-
C#で別のFormへ複数の値を返そ...
-
vc++ 2005 Pictureboxの透過処理
-
プログラミング(Java)じゃん...
-
C#でキーイベントが発生しない...
-
正規表現
-
C# MouseHoverを何度も呼ぶには
おすすめ情報