• ベストアンサー

Java GUIについて質問です

Javaの初心者でswingを用いたプログラムの書き方を勉強中です。今、ボタンを何回クリックしたかを表示させるプログラムを書こうと思っているのですが、actionPerformedの中で++を用いようとしてもうまくいかず、詰まってしまっています。どうしたらいいのか教えていただきたいです。

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.2

指摘箇所が多すぎて、手を入れました。 class MyFrame6 extends JFrame { public static void main(String args[]){ JFrame frame = new MyFrame6("タイトル"); frame.setVisible(true); //mainメソッドのとじ忘れ。 } int counter = 0; //結果表示用のラベル。ボタンを押した後、actionPerformedメソッドから見えるようにフィールド変数に。 JLabel label; public void plusOne(){ counter++; } public int getNum(){ return counter; } MyFrame6(String title){ setTitle(title); setBounds(100,100,100,100); //設定する値は参考URLを参照 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); //ラベルの初期値を設定するため、下記の位置へ移動 //クラス名だったMyFrame6をインスタンスへ変更。 int a = this.getNum(); label = new JLabel("押した回数: " + a + "回"); JButton btn = new JButton(); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ //ボタンが押される度に、plusOneするが、結果を表示していない。 //またメソッドをインスタンスから実行 plusOne(); //結果表示 //メソッドをインスタンスから実行 int a = getNum(); label.setText("押した回数: " + a + "回"); } } ); p.add(label); p.add(btn); //NORTHへ配置したいようなので、変更。 add(p,BorderLayout.NORTH); } } GUIよりも先に、クラスとインスタンスの違い、クラス変数とフィールド変数の違いを 学習されたほうが良いです。 あと、時間があるようなら、JavaAPIのドキュメントを参照してください。

参考URL:
http://docs.oracle.com/javase/jp/6/api/javax/swing/JFrame.html#setDefaultCloseOperation(int)
Kntmhr37
質問者

お礼

ありがとうございます。自分がいかに理解不足かがわかりました。もう一度勉強して出直してきます。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 どのような感じに作っているか載っていないのでわかりませんが、メンバ変数にカウント用の変数を用意してactionPerformedの中でボタンのイベントで加算すれば良いです。 いま、どのようなソースになっているのか載せられたら補足ください。

Kntmhr37
質問者

補足

返事が少し遅くなってすいません。以下のように書こうとしているのですがコンパイルができず、全く別の手段を用いたほうがよいのではと模索していたところです import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyFrame6 extends JFrame { public static void main(String args[]){ JFrame frame = new MyFrame6("タイトル"); frame.setVisible(true); int counter = 0; public void plusOne(){ counter++; } public int getNum(){ return counter; } MyFrame6(String title){ setTitle(title); setBounds(100,100,100,100); setDefaultCloseOperation(JFrame.BorderLayout.NORTH); JPanel p = new JPanel(); JButton btn = new JButton(); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ MyFrame6.plusOne(); } } ); int a = MyFrame6.getNum(); JLabel label = new JLabel("押した回数: " + a + "回"); p.add(label); p.add(btn); add(p,JFrame.BorderLayout.NORTH); } }

関連するQ&A

  • GUIについての質問です。

    swingを使って、guiの勉強をしています。 サイコロを作りたいのですが、ボタンを押すと1から6のサイコロの画像をランダムに表示させるプログラムが、うまくいきません。 僕ができるのはボタンを押すと画像を表示させることくらいです。 どのようなコードを書けばよいのでしょうか? どなたか知恵を貸していただくとありがたいです。

  • javaでGUI

    javaでGUIのアプリケーションやゲームを作る場合、swingやEclipseといったものがあるようなのですが、どちらを使えばよいのでしょうか?swingはもう古い、と聞いたのですがどうなのでしょうか。。。また、お勧めの書籍などはあるでしょうか? javaの基礎は一通りやったのですが、GUIについてはまだ勉強していません。わかるかた教えてください。お願いします。

    • ベストアンサー
    • Java
  • java NetBeans SwingでGUI

    java NetBeans IDE 7.4のSwingでGUI JFrameにテキスト領域を二つ張り付けます。 ボタンを張り付けダブルクリック。 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextArea1.append("test1"); jTextArea2.append("test2"); } ここまでは、できる。 int x; x = 1; jTextArea(x).append("test1"); x = 2; jTextArea(x).append("test1") このように1 .2 を変数でできないか? お願いします。

    • ベストアンサー
    • Java
  • javaのプログラムについての質問です。

    javaのプログラムについての質問です。 javaについて、あまり詳しくないので質問させていただきます。 ボタンを押して円などの色を変えるプログラムで、2色を変える(黄→赤)if文は public void actionPerformed(ActionEvent e) { if (bool) { setBackground(Color.yellow); this.bool = false; } else { setBackground(Color.red); this.bool = true; の様にfalseとtrueを使えばできるのですが、もし3、4色の場合はif文の中をどうしたら良いですか? できれば、ボタンを押すたびに黄→赤→黒→黄…など3~4色のループするようにしたいです。 いろいろ考えたのですが、うまくいきません。どなたか教えて下さい。

    • ベストアンサー
    • Java
  • javaのGUIのお勧めの書籍

    awtやswingに興味があって勉強してるんですが住んでいるところが田舎のためあまりパソコンの書籍が置いてないのです、お勧めの書籍などありましたら教えていただけませんか? 今のところ Java GUI プログラミングI~III 著者 大村忠史 を使っています。 またはお勧めのサイトなど(一応いくつか知ってますが)ありましたらお願いします。

    • ベストアンサー
    • Java
  • Javaでハイパーターミナルみたいなものをを作りたい

    最近javaをはじめたものです。 picで温度を測って定期的に、シリアル通信でパソコンに数字を送り、それをハイパー ターミナルに表示する装置をつくりました。 今度はこれをJAVAで、AWTかSWINGなんかに表示するプログラムをつくりたいん ですが、どのへんを勉強すればいいんでしょうかおしえてください。

    • ベストアンサー
    • Java
  • GUIアプリケーションのテスト

    Javaの初心者です。 Swingを利用してGUIアプリケーションを作成しているのですが、 GUIで作成したプログラムをテストするには、全て手動で行わなければ ならないのでしょうか? それとも何か試験ツールのようなものがあるのでしょうか?

  • JavaのGUIプログラミング

    javaのGUIプログラミングでメニューを作成したのですが、どうしてわからないところがあります。 ルートペインにメニューを追加した後、各々の処理を記述しようとするときに、 ActionListenerを実装したクラスのactionPerformedメソッドでイベントが起きたものをif文で場合分けして、それぞれの処理を記述していますが、これがいい方法だとはどうしても思えません。 自分なり考えた結果、 ・各メニューごとにクラスを作成してそこに処理を書き込む ・匿名のインナークラスを使用する を思いついたのですが、初心者なのでこの場合に応用できません。 分かりにくい文章で申し訳ないのですが、なにかアドバイスをいただけないでしょうか? できれば、参考になるソースをのせてくれると勉強しやすいので助かります。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAでGUIを搭載している環境はありますか

    JAVA初心者です。C#やVB.NetはGUIベースでプログラム開発できて便利です。今、Eclipseを使っていますが、JAVAだとボタンとかのGUIをコードから実現させています。 ちょっと不便に感じているので、JAVAで.NetみたくGUIベースで開発できる環境ってありますか?

    • ベストアンサー
    • Java
  • javaのswingコンポーネントについて質問です。

    javaのswingコンポーネントについて質問です。 javaをやり始めて2ヶ月ぐらいたちました。 今までアプレットとアプリケーションの両方をやりこちらはできたのですが 「swing」を使用したアプレット(JApplet)だけがアプレットビューアやhtmlで開いても実行できません。 わかるかたできれば教えていただければ幸いです。 追記 実行できないのはソースファイルにJAppletで組んだプログラムだけです。 本に記載されたソースプログラムやインターネットに上がっているソースプログラムを実行してみましたが これらもJAppletを使用したものだけができませんでした。