• 締切済み
  • すぐに回答を!

AWTのアプレットにおいてのイベント処理

javaのAWTでアプレット作成をしているのですがイベント処理部分をどう記述したらいいか解りません。 組み込みたいイベント処理は 1、アプレット起動時に「単語<tab>数字:数字,数字:数字,.......」という形のデータが入っているファイルを読み込んで数字列が一番多い単語(ただし二字熟語~四字熟語)を多い順に9つのボタンのラベルに格納していく。(どの位置のボタンのラベルに格納するかは自由) 2、ボタンを押すと1に書いているファイルを読み込みボタンのラベルに対応した数字列を見つけそれをテキストフィールドに全て出力させる。 ヒントだけでも宜しければ教えてください。お願いします。 /*<HTML> <BODY> <APPLET CODE="Tagcloud.class" WIDTH=400 HEIGHT=350> </APPLET> </BODY> </HTML>*/ //java.appletパッケージをimport宣言 //java.awtパッケージもimport宣言 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Tagcloud extends Applet implements ActionListener{ //AWTのGUIコンポーネントクラスの作成 Button bu1 = new Button(""); Button bu2 = new Button(""); Button bu3 = new Button(""); Button bu4 = new Button(""); Button bu5 = new Button(""); Button bu6 = new Button(""); Button bu7 = new Button(""); Button bu8 = new Button(""); Button bu9 = new Button(""); TextField tf=new TextField(20);//テキストフィールド public void init(){ setBackground(new Color(0,190,221)); //レイアウトを自由に変更 setLayout(null); //アプレット領域にGUIコンポーネント(部品)の追加(載せる) add(bu1); add(bu2); add(bu3); add(bu4); add(bu5); add(bu6); add(bu7); add(bu8);   add(bu9);   add(tf); //コンポーネントの配置 bu1.setBounds(50,50,80,20); bu2.setBounds(150,50,80,20); bu3.setBounds(250,50,80,20); bu4.setBounds(50,120,80,20); bu5.setBounds(150,120,80,20); bu6.setBounds(250,120,80,20); bu7.setBounds(50,190,80,20); bu8.setBounds(150,190,80,20); bu9.setBounds(250,190,80,20); tf.setBounds(50,250,250,20); //ボタンにActionListenerを登録します。 bu1.addActionListener(this); bu2.addActionListener(this); bu3.addActionListener(this); bu4.addActionListener(this); bu5.addActionListener(this); bu6.addActionListener(this); bu7.addActionListener(this); bu8.addActionListener(this); bu9.addActionListener(this); tf.addActionListener(this); } public void actionPerformed(ActionEvent e){ //ここにイベント処理をする部分を記述 } }

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数257
  • ありがとう数1

みんなの回答

  • 回答No.3

こんにちは。 補足ありがとうございました。 具体的に処理が書いてあるのでそれをそのままコーディングしてみてはいかがでしょうか。 どの部分が実際のところわからないのでしょうか。 先の質問どおりボタン選択時の処理がわからないのか、他の処理部分なのか。 まずはファイルを読み込んで、それぞれデータ解析した上でボタンのラベルセットまで実装してみてはいかがでしょう。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

そうですね。もう少し考えを纏めて(特に2字熟語の抽出法など)実装してからまた質問する事にします。 お付き合い頂きありがとうございました。

関連するQ&A

  • アプレットと自作パッケージのimportについて

    以下のような、アプレットのプログラムを作ったのですが、コンパイルは通るのですが、アプレットの初期化のところで止まってしまいます。理由と解決策を教えてください。 javac dev_java\TargetApplet\*.java ← これはOK appletviewer dev_java\TargetApplet\TargetApplet.java ←init() で止まる。 (ソース一部抜粋) package dev_java.TargetApplet ; import java.applet.* ; import java.awt.* ; import java.awt.event.* ; import dev_java.Target.* ;  // 自作のpackage /* <applet code="TargetApplet" width=500 height=400> </applet> */ public class TargetApplet extends Applet implements ActionListener, TextListener{ TextField Word ; TextField Mean ; TextArea Result ; Button Search ; Button Entry ; EnglishDictionary ed ; /* 自作package dev_java.Target で宣言されているクラス*/ public void init() { Word = new TextField(20) ; Mean = new TextField(20) ; Search = new Button("Search") ; Entry = new Button("Entry") ; Result = new TextArea(20,40) ; Word.addActionListener(this) ; Word.addTextListener(this) ; Mean.addActionListener(this) ; Mean.addTextListener(this) ; Search.addActionListener(this) ; Entry.addActionListener(this) ; // EnglishDictionary ed = new EnglishDictionary("dic/Target1900.dic") ; this.add(Word) ; this.add(Mean) ; this.add(Search) ; this.add(Entry) ; this.add(Result) ; } }

    • ベストアンサー
    • Java
  • Javaアプレットについてですが

    Javaアプレットでボタンを押したら数字が増えるものを作っているのですがどうもうまく動きません。 ソースは下の通りです。 変更しなければいけないところがあるならお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample7 extends Applet implements Runnable, ActionListener { Button bt; int num; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); Thread th; th = new Thread(this); th.start(); } public void actionPerformed(ActionEvent ae) { public void run() { try{ for(int i=0; i<11; i++){ num = i; repaint(); Thread.sleep(1000); } } catch(InterruptedException e){} } } public void paint(Graphics g) { String str = num + "です。"; g.drawString(str, 50, 50); } }

    • ベストアンサー
    • Java
  • return;

    retrun;を取ると動作がおかしくなるんですが return;にはどういう働きがあるんでしょうか? お願いします。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; //<applet code = "a.class" width = "300" height = "300"></applet> public class a extends Applet implements ActionListener{ Dialog d; Frame f; public void init() { setLayout( new GridLayout( 1, 1 ) ); Button b = ( Button )add( new Button( "frame" ) ); b.addActionListener( this ); } public void actionPerformed( ActionEvent e ){ if( e.getActionCommand() == "frame" ){ if ( f == null ){ f = new Frame( "Kitty on your lap" ); Button fb = (Button)f.add( new Button( "Kitty " ) ); fb.addActionListener( this ); f.setSize( 200 , 200 ); f.setVisible( true ); }else if( d == null ){ f.dispose(); f = null; } return; } if( e.getActionCommand() == "OK" ) { d.dispose(); d = null; return; } d = new Dialog( f, "Kitty", true ); d.setLayout( new GridLayout( 2, 1 ) ); d.setResizable( false ); d.add( new Label( "Kitty on your lap" ) ); Button b = (Button)d.add( new Button( "OK" ) ); b.addActionListener( this ); d.setSize( 400 , 200 ); d.setVisible( true ); } }

    • ベストアンサー
    • Java
  • 回答No.2

こんにちは。 なんとなくやりたいことは読み取れるのですが完全な仕様がちょっとわかりません。 ・数字列が一番多い単語(ただし二字熟語~四字熟語)  数字列が一番多いというのは【数字:数字】のセットの数が一番多い?  また、ただし二字熟語・・・のただしはどう考慮すれば良い? ・多い順に9つのボタンのラベルに格納していく。(どの位置のボタンのラベルに格納するかは自由)  多い順に自由に格納したら、別に多い順を取得する必要が無い気がする。  (読み込んだ順にラベルに振るのと変わらない?) 上の部分をもうちょっと具体的に教えてください。 やりたいことを一つずつ考えていきましょう。 ・起動時のファイル読み込み ・読み込んだファイルの解析(tabで分割してラベル文字と数字列を分解、さらにカンマで分割して数字列の数を解析) ・ボタンラベルへ文字列をセット ・ボタンがクリックされたとき、テキストフィールドへ数字列をセット  (ここでもう一度ファイルを読み込む必要は無いと思いますがいかがでしょうか。(最初に読み込んでいるため))

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます。 すいません説明不足でした。 1、数字列が一番多い単語(ただし二字熟語~四字熟語)   数字列が一番多いというのは【数字:数字】のセットの数が一番多い? はいおっしゃる通りです。 2、また、ただし二字熟語・・・のただしはどう考慮すれば良い? すいません二次熟語~四字熟語だけを集めたデータをテキストファイルに出力していくプログラムが別に必要だと思っています。 読み込むファイルは転置索引(単語<tab>数字列<改行>単語<tab>数字列<改行>....の繰り返し)になっています。 単語部分には漢字以外に数字や記号(*など)が存在しますのでそのノイズを除去するためにまず 1、ファイルの中身をreadLineメソッドなどで一行ずつ読み込む 2、splitメソッドでタブを区切りに単語と数字列を分割する 3、単語が格納された配列が二字熟語~なら数字列と共にテキストファイルに出力(このテキストファイルをout.txtとする) というプログラムを作成します。次にout.txtを読み込み数字列が多い二次熟語を順番にボタンのラベルに格納していくプログラムを作成しようと考えています。 3、多い順に9つのボタンのラベルに格納していく。(どの位置のボタンのラベルに格納するかは自由)  多い順に自由に格納したら、別に多い順を取得する必要が無い気がする。  (読み込んだ順にラベルに振るのと変わらない?) 読み込むファイルには膨大な量のデータが入っています。そのファイルの中で数字列(数字:数字のセットの数)が一番多い単語から順番に9つだけ選ぶのでボタンへの振り分け方はあまり気にしなくて良いと思っています。

  • 回答No.1

ボタンを押したらラベルとかテキストフィールドに文字を表示する処理は書けますか? 書けないのであれば、書けるように基本を勉強しましょう。 その問題をやるには早すぎます。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます。 例:bu1,bu2が押されたときテキストフィールドに数字列を出力する public void actionPerformed(ActionEvent e){ if(e.getSource() == bu1){ tf.setText("13:1,83:1,84:2,101:1,171:1,184:1,185:1,195:1,280:2,288:3,479:1,524:1,532:1"); } else if(e.getSource()==bu2){ tf.setText(); } } といった感じで宜しいでしょうか?

関連するQ&A

  • main()メソッドが無いコード

    最近、Javaアプレット等を勉強してるのですが 今まではmain()メソッドの中に処理を書いて来たのですが、 下記の様なコードにはmain()メソッドが有りません。 import java.applet.Applet; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample6 extends Applet implements ActionListener { Button bt; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); } public void actionPerformed(ActionEvent ae) { bt.setLabel("中止"); } } これはどう言う事なんでしょうか?

    • ベストアンサー
    • Java
  • HTMLファイルを開きたい

    こんにちは、いつもお世話になっています。 質問があります。 アプレットでボタンを押すと、 HTMLファイル「c:/test_folder/test.html」 を開きたいのですが、 下記コードの(☆) のところに何を書いていいかわかりません。 どなたかご存知でしたら教えていただけないでしょうか? よろしくお願いします。 ============================================================= import javax.swing.*; import java.awt.*; import java.applet.Applet; import java.awt.event.*; import java.net.*; public class situmon extends Applet implements ActionListener { JPanel panel; JButton button; public void init() { panel=new JPanel(); button=new JButton("次へ"); button.addActionListener(this); panel.add(button); this.add(panel); } public void actionPerformed(ActionEvent e) { if(e.getSource()==button) { (☆); } } }

    • ベストアンサー
    • Java
  • java アプレット

    学校の授業でアプレットを学んでいます。 しかし・・・ 下のプログラムで、計算した結果をlabel3にはりつけたいのですが、計算結果がでてくれません・・・ボタンを押しても何もでてきません。 コマンドプロンプトで、エラーはでてきません。 お手数ですが、誰かどこがいけないのか教えて下さい。 import java.awt.*; import java.awt.event.*; public class B extends java.applet.Applet implements ActionListener { Label label3 = new Label(); Button button2 = new Button(); TextField textfield1= new TextField(10); TextField textfield2= new TextField(10); public void init() { button2.setLabel("入力したらクリック!"); button2.setBounds(new Rectangle(50, 465, 120, 20)); this.setLayout(null); label3.setBackground(Color.blue); label3.setBounds(new Rectangle(325, 80, 200, 35)); textfield1.setBounds(100, 425, 100, 25); textfield2.setBounds(150, 350, 100, 25); this.add(textfield2, null); this.add(label3, null); this.add(textfield1, null); this.add(button2, null);} public void actionPerformed(ActionEvent event) {if(event.getSource() == button2) {int diff = Integer.parseInt(textfield1.getText()) - Integer.parseInt(textfield2.getText()); String otsuri; otsuri ="お釣りは"+ diff +"円です。"; label3.setText(otsuri);} }} よろしくお願いします。

    • ベストアンサー
    • Java
  • イベント処理がうまくいきません。

    java初心者です。 スタートボタンをクリックするとトランプ52枚表示されるようにしたいのですが、 1枚も表示されず、原因もよく分からないため苦労してます。 よろしくお願い致します。 以下は、プログラムです。 import java.awt.Color; import java.awt.Dimension; import java.awt.*; import javax.swing.*; import java.io.*; import javax.imageio.*; import java.awt.Graphics; import java.awt.Font; import javax.swing.JButton; import java.awt.Container; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.event.*; public class narabi2 extends JPanel{ JButton btn1,btn2,btn3; static Image img[] = new Image[52]; public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(f.EXIT_ON_CLOSE); f.setResizable(true); f.setVisible(true); new narabi2(); } public narabi2(){ btn1 = new JButton("スタート"); this.add(btn1); btn1.addActionListener(new ev()); btn2 = new JButton("ランキング"); this.add(btn2); btn2.addActionListener(new ev()); btn3 = new JButton("ログアウト"); this.add(btn3); btn3.addActionListener(new ev()); JFrame f = new JFrame(); f.setSize(900,840); f.getContentPane().setBackground(new Color(0,100,0)); f.setDefaultCloseOperation(f.EXIT_ON_CLOSE); f.setResizable(true); f.setVisible(true); f.add(this); } public void paintComponent(Graphics g){ super.paintComponent(g); btn1 = new JButton("スタート"); this.add(btn1); btn1.addActionListener(new ev()); btn2 = new JButton("ランキング"); this.add(btn2); btn2.addActionListener(new ev()); btn3 = new JButton("ログアウト"); this.add(btn3); btn3.addActionListener(new ev()); setBackground(new Color(0,100,0)); int i;               //カードを並べる処理 int x = 0,y=0; for (i = 0; i < 52; i++) { g.drawImage(img[i], x, y, null); x = x + 100; if(x>=900){ x=0; y=y+140; } } } class ev implements ActionListener{ public void actionPerformed(ActionEvent m){ if(m.getSource()==btn1) //スタート { //public static void main(String[] args) { // 画像ファイルの読み込み int i, j; int no = 0; String c[] = {"s","h","c","d"}; try { for(i = 0; i < 4; i++) { for(j = 1; j <= 13; j++) { //String filename = "cards.png"; String filename = String.format("cards/%s%02d.png", c[i], j); img[no] = ImageIO.read(new File(filename)); no++; } } } catch(Exception e) { System.out.println(e); System.exit(0); } // シャッフル Image w; for (i = 51; i >= 0; i--) { j = (int)(Math.random() * (i + 1)); w = img[i]; img[i] = img[j]; img[j] = w; } } /*public void paintComponent(Graphics g) { super.paintComponent(g); int i; int x = 0,y=0; for (i = 0; i < 52; i++) { g.drawImage(img[i], x, y, null); x = x + 100; if(x>=900){ x=0; y=y+140; } } }*/ } /*else if(m.getSource()==btn2) //ランキング { } else if(m.getSource()==btn3) //ログアウト { } }*/ } }

  • 画像処理についておしえてください!

    ここに新たに表示した画像を消去するボタンを 追加したいので教えてください! import java.awt.*; import java.awt.event.*; import java.io.*; import java.applet.Applet; public class k202 extends Frame implements ActionListener { MyCanvas c1; Button b1; Button e1; Image img; Button btnClear; int flag; public k202() { super(); setTitle("Hello"); setSize(500,500); setLayout(null); c1 = new MyCanvas(); c1.setBounds(25,25,250,150); this.add(c1); b1 = new Button("Read"); b1.setBounds(25,200,100,25); b1.addActionListener(this); this.add(b1); e1 = new Button("Clear"); e1.setBounds(50,250,150,50); //ボタンのイベント処理メソッドを定義 e1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ flag = 0; repaint(); } }); } public static void main (String args []) { new k202().show(); } public void actionPerformed(ActionEvent ev) { if (ev.getSource() == b1) { this.readImageFromFile(); } } void readImageFromFile() { try { FileDialog fd = new FileDialog(this,"Select Image File.",FileDialog.LOAD); fd.setVisible(true); String fname = fd.getDirectory() + fd.getFile(); Toolkit tk = Toolkit.getDefaultToolkit(); img = tk.getImage(fname); c1.repaint(); } catch(Exception e) { System.out.println(e); } } class MyCanvas extends Canvas { public void paint(Graphics g) { if (img != null) { g.drawImage(img,0,0,this); } } } }

  • jcpad

    『長方形をあらかじめ置き、、縮小、拡大のボタンを押すことで  縦横を1/1.05倍に縮小できるようにする』 という問題が教科書にあり、拡大、縮小ボタンを作るまではできたのですがそれ以降がうまく考えることができません。 //<applet code= "Counter3.class" width=300 height=150></applet> import java.awt.*; import java.applet.*; import java.awt.event.*; public class Counter3 extends Applet implements ActionListener { Font font; Button kakudaiButton, syukushoButton; public void init() { font = new Font("Serif", Font.BOLD, 72); kakudaiButton = new Button("拡大"); kakudaiButton.addActionListener(this); add(kakudaiButton); syukushoButton = new Button("縮小"); syukushoButton.addActionListener(this); add(syukushoButton); } public void paint(Graphics g) { g.drawOval(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == kakudaiButton) { ; } else if (e.getSource() == syukushoButton) { ; } repaint(); } }

  • アプレットについて

    リストの「明治」をクリックするとactionPerformedが呼ばれますが、コンストラクタで代入したListへの参照変数lが「null」と表示されてしまいif文で比較することができません。 MyListenerのコンストラクタではちゃんと参照する値が入っているのに、なぜactionPerformedが呼ばれたときに「null」になるかが分からない次第であります。 回答のほどよろしくお願い致します。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; class MyListener implements ActionListener{ private List l;   public MyListener(){} public MyListener(List l){ System.out.println(l); System.out.println("MyListener"); this.l = l; System.out.println(this.l); } public void actionPerformed(ActionEvent evt){ System.out.println("actionPerformed"); System.out.println(this.l); if(l == evt.getSource()){} //比較ができない } } public class MyApplet2 extends Applet{ private Panel sePanel, buttonPanel, waPanel, controlPanel; private List l; public void init(){ buttonPanel = new Panel(); waPanel = new Panel(); //レイアウトの設定 setLayout(new BorderLayout()); l = new List(1); l.add("明治"); waPanel.add(l); add(waPanel, "South");     //イベントリスナを登録する l.addActionListener(new MyListener()); new MyListener(l); } }

    • ベストアンサー
    • Java
  • event処理の初期化について

    クリックすると数字が1つづ増えていく処理はできるのですが、 別ボタンをクリックすると、最初の0に戻したいのですがどのようにすればいいのでしょうか・・ 仮に、b.setText("0");として0が表示できたとしても、そのあと上の増幅ボタンを押すとそれまで増えていた数から1ずつ増えてしまいます つまり、リセットする!というようなことをしたいのですが考え方も方法もわからないのです。どなたかご回答よろしくお願いいたします import java.awt.*; import java.awt.event.*; class click_a extends Frame{ Button a1,a2; Label b; Panel c; int d=0; click_a(){ setSize(300,300); setVisible(true); a1=new Button("ボタンを押すと数字が足し算されます"); a2=new Button("初期値に戻します"); b=new Label(""+d); c=new Panel(); c.setLayout(new GridLayout(3,1)); add(c); c.add(a1); c.add(a2); c.add(b); a1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ b.setText(""+d); d++; } }); a2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ b.setText("0"); } }); } public static void main(String[] args){ new click_a(); } }

    • ベストアンサー
    • Java
  • アクションリスナー(初心者です)

    JAVAでボタンが押されたらすでに描かれている線に さらに線が加わって描かれるというプログラムを作ろうとしているのですが、アクションリスナーを受け取ったメソッドの中身をどうしたらいいのか行き詰まりました・・・作りかけのプログラムを載せてみますので アドバイスいただければと思います よろしくお願いします import java.applet.Applet; import java.awt.Graphics.*; import java.awt.event.*; import java.awt.*; public class file928 extends Applet implements ActionListener { Button botan; public void init() { botan=new Button("選択"); add(botan); botan.addActionListener(this); } public void paint(Graphics g) { g.drawString("L.A.Airport",100,300);           ~中略~ g.drawLine(405,420,655,240); } public void actionPerformed(ActionEvent x) { ーここをどうしたらいいかわかりません・・・ー } }

    • ベストアンサー
    • Java
  • JAVAのプロフラミングについて

    □、○、△のボタンがあり、それぞれのボタンについて 一回押すと、その押したボタンの図形を2個描き、 押すたびに永久的に増えていくというようなプログラム を作りたいのですが、ここからどのようにすればいいのか教えてください。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class kadaiApplet232 extends Applet implements ActionListener { int square = 0; int circle = 0; int triangle = 0; Button squareButton, circleButton,triangleButton; public void init(){ squareButton = new Button("□"); squareButton.addActionListener(this); add(squareButton); circleButton = new Button("○"); circleButton.addActionListener(this); add(circleButton); triangleButton = new Button("△"); triangleButton.addActionListener(this); add(triangleButton); } public void paint(Graphics g){ if(){ g.drawRect(30, 30, square, square); } if(){ g.drawOval(60,30,circle,circle); } if(){ g.drawLine(90+(int)(triangle/2),30,90,30+triangle); g.drawLine(90,30+triangle,90+triangle,30+triangle); g.drawLine(90+triangle,30+triangle,90+(int)(triangle/2),30); } } public void actionPerformed(ActionEvent e){ if ( e.getSource() == squareButton){ square = 30; } else if ( e.getSource() == circleButton){ circle = 30; } else if (e.getSource() == triangleButton){ triangle = 30; } repaint(); } }

    • ベストアンサー
    • Java