- 締切済み
ボタンを押してIPを表示させたい。
javaの勉強をJbuilderを使って始めました。 他の言語のスキルもかなり頼りない程度です。 質問なんですが、自分のマシンのIPを調べるというJavaプログラムを本で見つけそれをDOS上で コンパイルし実行したところDOSプロンプト上にIPがちゃんと表示されました。 ~略 try{ InetAddress local = InetAddress.getLocalHost(); System.out.println( local ); } catch( Exception e ){ 略~ という内容なんですが、これをjbuilderを使って フレームにボタンとラベルを配置して、ボタンを押したら ラベルにIPが表示されるようにしたいんですがうまくいきません。 void jButton2_actionPerformed(ActionEvent e) { try{ InetAddress local = InetAddress.getLocalHost(); jLabel1.setText(local); } catch(Exception e ){ System.err.println("error"); System.exit(1); } というようなアクション内の内容なんですが、どのへんがおかしいのでしょうか? いろいろ試してみてだんだんシンプルになってきたのですが根本的に間違ってるのでしょう。 疑問として、取得したIPは文字列なのか? toStringというのをよく見かけるけれど必要なのか? NEWを使わずにいきなり InetAddress local = InetAddress.getLocalHost(); この一文で良いのか? などなどわからないことだらけです。 プログラム初心故、見当違いな言葉使い、質問など多いと思いますが、 どなたかわかりやすく解説お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- UKY
- ベストアンサー率50% (604/1207)
> 疑問として、取得したIPは文字列なのか? > toStringというのをよく見かけるけれど必要なのか? 取得したIPはInetAddressクラスのインスタンスです。(だから戻り値をInetAddress型の変数に代入しているんですよ) したがって、toString()メソッドで文字列に変換しないといけません。 > NEWを使わずにいきなり > InetAddress local = InetAddress.getLocalHost(); > この一文で良いのか? getLocalHost()はスタティックなメソッドなので、newを使わなくてもそのまま使えます。 あと、イベントリスナの実装のしかたがすこし違っています。Javaでのイベントの扱いについて、もう少し参考書などで確認なさってください。Javaでは、メソッド名でイベントが発生するコンポーネントを指定するのではなく、リスナをコンポーネントに「追加」することによって対象のコンポーネントを指定します。 具体的には、リスナのメソッドは次のようなものになると思います。 public void actionPerformed(ActionEvent event) { try { InetAddress local = InetAddress.getLocalHost(); jLabel1.setText(local.toString()); } catch (Exception e) { jLabel1.setText("エラー発生"); } } どちらにしても、余り欲張らずに、最初はウィンドウの表示、続いてイベントの処理、さらにIPアドレスと組み合わせ、といったようにゆっくりと進めていったほうがいいと思います。
お礼
ありがとうございました。 IP表示できました! そうですね、イベントリスナといわれてもピンとこない 初心者がちょっと欲張りすぎたようです(笑) 順々にjavaの仕組みを覚えていこうと思います。 助かりました。