- 締切済み
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)
- 専門家の回答
みんなの回答
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 補足ありがとうございました。 具体的に処理が書いてあるのでそれをそのままコーディングしてみてはいかがでしょうか。 どの部分が実際のところわからないのでしょうか。 先の質問どおりボタン選択時の処理がわからないのか、他の処理部分なのか。 まずはファイルを読み込んで、それぞれデータ解析した上でボタンのラベルセットまで実装してみてはいかがでしょう。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 なんとなくやりたいことは読み取れるのですが完全な仕様がちょっとわかりません。 ・数字列が一番多い単語(ただし二字熟語~四字熟語) 数字列が一番多いというのは【数字:数字】のセットの数が一番多い? また、ただし二字熟語・・・のただしはどう考慮すれば良い? ・多い順に9つのボタンのラベルに格納していく。(どの位置のボタンのラベルに格納するかは自由) 多い順に自由に格納したら、別に多い順を取得する必要が無い気がする。 (読み込んだ順にラベルに振るのと変わらない?) 上の部分をもうちょっと具体的に教えてください。 やりたいことを一つずつ考えていきましょう。 ・起動時のファイル読み込み ・読み込んだファイルの解析(tabで分割してラベル文字と数字列を分解、さらにカンマで分割して数字列の数を解析) ・ボタンラベルへ文字列をセット ・ボタンがクリックされたとき、テキストフィールドへ数字列をセット (ここでもう一度ファイルを読み込む必要は無いと思いますがいかがでしょうか。(最初に読み込んでいるため))
補足
回答ありがとうございます。 すいません説明不足でした。 1、数字列が一番多い単語(ただし二字熟語~四字熟語) 数字列が一番多いというのは【数字:数字】のセットの数が一番多い? はいおっしゃる通りです。 2、また、ただし二字熟語・・・のただしはどう考慮すれば良い? すいません二次熟語~四字熟語だけを集めたデータをテキストファイルに出力していくプログラムが別に必要だと思っています。 読み込むファイルは転置索引(単語<tab>数字列<改行>単語<tab>数字列<改行>....の繰り返し)になっています。 単語部分には漢字以外に数字や記号(*など)が存在しますのでそのノイズを除去するためにまず 1、ファイルの中身をreadLineメソッドなどで一行ずつ読み込む 2、splitメソッドでタブを区切りに単語と数字列を分割する 3、単語が格納された配列が二字熟語~なら数字列と共にテキストファイルに出力(このテキストファイルをout.txtとする) というプログラムを作成します。次にout.txtを読み込み数字列が多い二次熟語を順番にボタンのラベルに格納していくプログラムを作成しようと考えています。 3、多い順に9つのボタンのラベルに格納していく。(どの位置のボタンのラベルに格納するかは自由) 多い順に自由に格納したら、別に多い順を取得する必要が無い気がする。 (読み込んだ順にラベルに振るのと変わらない?) 読み込むファイルには膨大な量のデータが入っています。そのファイルの中で数字列(数字:数字のセットの数)が一番多い単語から順番に9つだけ選ぶのでボタンへの振り分け方はあまり気にしなくて良いと思っています。
- pcbeginner
- ベストアンサー率46% (261/560)
ボタンを押したらラベルとかテキストフィールドに文字を表示する処理は書けますか? 書けないのであれば、書けるように基本を勉強しましょう。 その問題をやるには早すぎます。
補足
回答ありがとうございます。 例: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(); } } といった感じで宜しいでしょうか?
お礼
そうですね。もう少し考えを纏めて(特に2字熟語の抽出法など)実装してからまた質問する事にします。 お付き合い頂きありがとうございました。