2009年5月29日金曜日

AWT テキストファイルのアクセス

テキストファイルの書き出し
 ①FileWriteインスタンスの作成
 ②FileWriterを元にBufferedWriterインスタンスを作成
 ③BufferedWriterのメソッドを呼び出しテキストを書き出す
 ④バッファ内に残ったデータを全て書き出す
 ⑤書き出しが終了したらcloseメソッドによりストリームを開放する

テキストファイルの読み込み
 ①FileReaderインスタンスを作成
 ②FileReaderを元にBufferedReaderインスタンスを作成
 ③BufferedReaderのメソッドを呼び出しテキストを読み込む
 ④テキストストリームにあるテキストを全て一括して読み込むことは出来ないため一行ずつ読み込みString変数に設定する
 ⑤読み出しが終了したらcloseメソッドによりストリームを開放する

例.

 public class FileioApp extends Frame implements ActionListener{

  private static final long serialVersionUID = 1L;
  Button b1,b2;
  TextArea ta;

  public static void main(String[] args) {
   new FileioApp();
  }

  public FileioApp(){
   this.setSize(300,200);
   ta = new TextArea();
   this.add(ta,BorderLayout.CENTER);
   b1 = new Button("Load");
   b1.addActionListener(this);
   b2 = new Button("Save");
   b2.addActionListener(this);
   Panel p = new Panel();
   p.add(b1);
   p.add(b2);
   this.add(p,BorderLayout.SOUTH);
   this.setVisible(true);
  }

  public void actionPerformed(ActionEvent ev){
   if(ev.getSource() == b1){
    this.load();
   }
   else if(ev.getSource() == b2){
    this.save();
   }
  }

  public void load(){
   FileReader fr = null;
   BufferedReader br = null;
   try{
    fr = new FileReader("sample.txt");
    br = new BufferedReader(fr);
    String str = "";
    String rstr = "";
    while((rstr = br.readLine()) != null){
     str += rstr + "\r\n";
    }
    ta.setText(str);
   } catch(Exception ex){
    ex.printStackTrace();
   } finally {
    try{
     br.close();
    } catch(Exception ex2){
     ex2.printStackTrace();
    }
   }
  }

  public void save(){
   FileWriter fw = null;
   BufferedWriter bw = null;
   try{
    fw = new FileWriter("sample.txt");
    bw = new BufferedWriter(fw);
    bw.write(ta.getText());
    bw.flush();
   } catch(Exception ex){
    ex.printStackTrace();
   } finally {
    try{
     bw.close();
    } catch (Exception ex2){
     ex2.printStackTrace();
    }
   }
  }
 }

2009年5月27日水曜日

AWT グラフィック表示

・表示に関するもの
  Graphics.setColor(Color);
  描画色を設定
  Color = Graphics.getColor();
  現在の描画色をColorインスタンスとして返す

・フォントに関するもの
  Graphics.setFont(Font);
  描画フォントを設定
  Font = Graphics.getFont();
  現在のフォントをFontインスタンスとして返す

・基本図形の描画
  Graphics.drawRect(横位置,縦位置,横幅,縦幅);
  枠線のみの四角形を描く
  Graphics.fillRect(横位置,縦位置,横幅,縦幅);
  内部を塗りつぶした四角形を描く

  Graphics.drawOval(横位置,縦位置,横幅,縦幅);
  輪郭線のみの円を描く
  Graphics.fillOval(横位置,縦位置,横幅,縦幅);
  内部を塗りつぶした円を描く

  Graphics.drawLine(横位置1,縦位置1,横位置2,縦位置2);
  2点を結ぶ直線を描く

  Graphics.draw3DRect(横位置,縦位置,横幅,縦幅,boolean);
  輪郭を立体化した四角形を描く。
  booleanがtrueの場合飛び出して、falseの場合へこんで描く

  Graphics.drawRoundRect(横位置,縦位置,横幅,縦幅,丸みの横幅,丸みの縦幅);
  角の丸くなった枠線のみの四角形を描きます。
  Graphics.fillRoundRect(横位置,縦位置,横幅,縦幅,丸みの横幅,丸みの縦幅);
  角の丸くなった塗りつぶした四角形を描きます。

  Graphics.drawArc(横位置,縦位置,横幅,縦幅,開始角度,描画角度);
  円弧の曲線を描く
  Graphics.fillArc(横位置,縦位置,横幅,縦幅,開始角度,描画角度);
  扇形図形を描く

  Graphics.drawPolyline(int配列1,int配列2,int値);
  連続する開いた直線図形を描く
  Graphics.drawPolygon(int配列1,int配列2,int値);
  連続する閉じた直線図形を描く
  Graphics.fillPolygon(int配列1,int配列2,int値);
  連続する閉じた直線図形の内部を塗り潰す
  Graphics.drawPolygon(Polygon);
  連続する閉じた直線図形のインスタンスで描く
  Graphics.drawPolygon(Polygon);
  連続する閉じた直線図形のインスタンスの内部を塗り潰す

・イメージファイル(JPEG,GIF,PNG)の描画
  ①ToolkitクラスのメソッドでデフォルトのToolkitインスタンスを得る

Toolkit tk;
tk = Toolkit.getDefaultToolkit();

  ②イメージファイルからイメージを読み込みImageインスタンスとして返す

Image img;
img = Toolkit.getImage(String);
img = Toolkit.getImage(URL);

  ③イメージを表示する

Grahics.drawImage(image,横位置,縦位置,ImageObserver);
Grahics.drawImage(image,横位置,縦位置,Color,ImageObserver);
Grahics.drawImage(image,横位置,縦位置,横幅,縦幅,ImageObserver);
Grahics.drawImage(image,横位置,縦位置,横幅,縦幅,Color,ImageObserver);
Grahics.drawImage(image,横位置1,縦位置1,横幅1,縦幅1,横位置2,縦位置2,横幅2,縦幅2,ImageObserver);
Grahics.drawImage(image,横位置1,縦位置1,横幅1,縦幅1,横位置2,縦位置2,横幅2,縦幅2,Color,ImageObserver);


・イメージファイル(JPEG,GIF,PNG)の描画(paint以外で描画)
  マウスをクリックしたら描画をする

public class ImageApp extends Frame{

Image im = null;
Graphics g2 = null;

public static void main(String[] args) {
new ImageApp();
}

public ImageApp(){
this.addMouseListener(new MyMouseAdapter());
this.setSize(300,200);
this.setVisible(true);
}

public void paint(Graphics g){
if(im == null){
im = this.createImage(this.getWidth(),this.getHeight());
g2 = im.getGraphics();
}
g.drawImage(im, 0, 0, this);
}

class MyMouseAdapter extends MouseAdapter{
public void mouseClicked(MouseEvent ev){
int x = ev.getX();
int y = ev.getY();
for(int i=0; i<10; i++){
g2.setColor(new Color(255,i*25,i*25));
g2.drawOval(x-i*3, y-i*3, i*3*2, i*3*2);
}
g2.dispose();
}
}
}


・Graphicsを取得する
  コンポーネントのGraphicsインスタンスのコピーを返す
  Graphics g = this.getGraphics();

・Graphicsを破棄する
  Graphicsインスタンスを破棄する
  Graphics.dispose();

・イメージファイル(JPEG,GIF,PNG)の描画(imageインスタンスを使用したバッファリング)
  マウスをクリックしたら描画をする


public class FileioApp extends Frame{

private static final long serialVersionUID = 1L;
Image im = null;
Graphics g2 = null;

public static void main(String[] args) {
new FileioApp();
}

public void paint(Graphics g){
if(im == null){
im = this.createImage(this.getWidth(), this.getHeight());
g2 = im.getGraphics();
}
g.drawImage(im, 0, 0, this);
}

public FileioApp(){
this.addMouseListener(new MyMouseAdapter());
this.setSize(300,200);
this.setVisible(true);
}

class MyMouseAdapter extends MouseAdapter{
public void mouseClicked(MouseEvent ev){
int x = ev.getX();
int y = ev.getY();
for(int i=0;i<10;i++){
g2.setColor(new Color(255,i*25,i*25));
g2.drawOval(x-i*3, y-i*3, i*3*2,i*3*2);
}
repaint();
}
}
}

2009年5月7日木曜日

AWT ウインドウの状態変更のイベント

■イベント
ウインドウのアイコン化や最大化されたときに発生する
WindowEvent:WindowStateListenerを組み込んで処理する
■WindowStateListenerの組み込み
ウインドウ.addWindowStateListener(WindowStateListener);
■WindowStateListenerのイベント処理用メソッド
public void windowStateChanged(WindowEvent ev)
ウインドウの状態が変更されたときに呼び出される

AWT テキストの変更のイベント

■イベント
テキストが変更されたときに呼び出されるイベント
TextEvent:TextListenerを組み込んで処理する
■TextListenerの組み込み
コンポーネント.addTextListener(TextListener);
■TextListenerのイベント処理用メソッド
public void textValueChanged(TextEvent ev)
テキストが変更されたときに呼び出される

AWT コンテナのイベント

■イベント
コンテナにコンポーネントを組み込まれたり、除かれたりした時のイベント
ContainerEvent:ContainerListenerを組み込んで処理する
■ContainerListenerの組み込み
コンポーネント.addContainerListener(ContainerListener);
■ContainerListenerのイベント処理用メソッド
public void componentAdded(ContainerEvent ev)
コンポーネントが組み込まれたときに呼び出される
public void componentRemoved(ContainerEvent ev)
コンポーネントが取り除かれたときに呼び出される

AWT コンポーネントのイベント

■イベント
コンポーネントを移動したりリサイズした時のイベント
ComponentEvent:ComponentListenerを組み込んで処理する
■ComponentListenerの組み込み
コンポーネント.addComponentListener(ComponentListener);
■ComponentListenerのイベント処理用メソッド
public void componentHidden(ComponentEvent ev)
コンポーネントが不可視になったときに呼び出される
public void componentShown(ComponentEvent ev)
コンポーネントが可視になったときに呼び出される
public void componentMoved(ComponentEvent ev)
コンポーネントが移動したときに呼び出される
public void componentResized(ComponentEvent ev)
コンポーネントがリサイズされたときに呼び出される

AWT フォーカス移動に関するイベント

■FocusListenerの組み込み
コンポーネント.addFocusListener(FocusListener);
■イベント処理用メソッド
public void focusGained(FocusEvent ev)
コンポーネントがフォーカスを得たときに呼び出される
public void focusLost(FocusEvent ev)
コンポーネントがフォーカスを失ったときに呼び出される
■イベント
FocusEventのイベント
FocusEvent:FocusListenerを組み込んで処理する
■FocusEventの主なメソッド
Component = FocusEvent.getOppositeComponent();
フォーカス変更に関するもう一方のコンポーネントを得る

AWT KEY操作のイベント

■KeyListenerの組み込み
コンポーネント.addKeyListener(KeyListener);
■KeyListenerのイベント処理用メソッド
public void keyTyped(KeyEvent ev)
キーボードをタイプしたときに呼び出される
public void keyPressed(KeyEvent ev)
キーボードを押したときに呼び出される
public void keyReleased(KeyEvent ev)
キーボードを離したときに呼び出される
■アダプタクラス(既にイベントリスナーを組み込み済みのクラス)
KeyAdapter:KeyListenerを組み込み済みのクラス
■KeyEventの主なメソッド
char 変数 = KeyEvent.getKeyChar();
イベントが発生したキーのキャラクタ(char値)を返す
int 変数 = KeyEvent.getKeyCode();
イベントが発生したキーのキーコードを返す
boolean 変数 = KeyEvent.isShiftDown();
イベントが発生したときにshiftキーが押されていたかを返す
boolean 変数 = KeyEvent.isAlttDown();
イベントが発生したときにAltキーが押されていたかを返す
boolean 変数 = KeyEvent.isMetaDown();
イベントが発生したときにメタキーが押されていたかを返す
boolean 変数 = KeyEvent.isControlDown();
イベントが発生したときにCtrlキーが押されていたかを返す

AWT MOUSE操作のイベント

■イベントリスナーの組み込み
マウスボタンの操作イベント
コンポーネント.addMouseListener(MouseListener);
マウスポインタの移動イベント
コンポーネント.addMouseMotionListener(MouseMotionListener);
マウスホイールの操作イベント
コンポーネント.addMouseWheelListener(MouseWheelListener);
■MouseListenerのイベント処理用メソッド
public void MouseClicked(MouseEvent ev)
マウスボタンをクリックしたときに呼び出される
public void MouseEntered(MouseEvent ev)
マウスボタンが領域内に入ったときに呼び出される
public void MouseExited(MouseEvent ev)
マウスボタンが領域外に出たときに呼び出される
public void MousePressed(MouseEvent ev)
マウスボタンが押されたときに呼び出される
public void MouseReleased(MouseEvent ev)
マウスボタンが放されたときに呼び出される
■MouseMotionListenerのイベント処理用メソッド
public void MouseDragged(MouseEvent ev)
マウスがドラッグされている間、常に呼び出される
public void MouseMoved(MouseEvent ev)
マウスが動かされている間、常に呼び出される
■MouseWheelListenerのイベント処理用メソッド
public void MouseWheelMoved(MouseWheelEvent ev)
マウスホイールが回転されている間、常に呼び出される
■アダプタクラス(既にイベントリスナーを組み込み済みのクラス)
MouseAdapter:MouseListenerを組み込み済みのクラス
MouseMotionAdapter:MouseMotionListenerを組み込み済みのクラス
■MouseEventの主なメソッド
int 変数 = MouseEvent.getButton();
イベントが発生したマウスボタンを示す値を返す
(MouseEvent.BUTTON1:左ボタン,MouseEvent.BUTTON2:中央ボタン,
MouseEvent.BUTTON3:右ボタン)
int 変数 = MouseEvent.getClickCount();
マウスボタンが何回押されたかを得る(ダブルクリック,トリプルクリックの検知に使う)
Point = MouseEvent.getPoint();
イベントが発生した際のマウスポインタの位置をPointインスタンスとして得る
int 変数 = MouseEvent.getX();
イベントが発生した際のマウスポインタの横位置を得る
int 変数 = MouseEvent.getY();
イベントが発生した際のマウスポインタの縦位置を得る
boolean 変数 = MouseEvent.isShiftDown();
イベントが発生した際にShiftキーが押されていたか得る
boolean 変数 = MouseEvent.isAltDown();
イベントが発生した際にAltキーが押されていたか得る
boolean 変数 = MouseEvent.isMetaDown();
イベントが発生した際にメタキーが押されていたか得る
boolean 変数 = MouseEvent.isControlDown();
イベントが発生した際にCtrlキーが押されていたか得る

AWT 一覧を表示するListのイベント

■コンストラクタ
new List();
new List(int値);
new List(int値,boolean値);
int値:表示する行数
boolean値:複数行選択の可/不可を示す。trueならば複数選択可
■項目の編集
List.add(String);
List.add(String,int値);
List.remove(String);
List.remove(int値);
List.removeAll();
String:項目のテキスト
int値:項目のインデックス番号
■イベント
項目選択時のイベント
ItemEvent:ItemListenerを組み込んで処理する
盲目ダブルクリックのイベント
ActionEvent:ActionListenerを組み込んで処理する
■項目利用のメソッド
String 変数 = List.getItem(int値);
引数指定したインデックス番号の項目テキストを得る
int 変数 = List.getItemCount();
項目数を返す
int 変数 = List.getSelectedIndex();
選択されているインデックス番号を得る
String 変数 = List.getSelectedItem();
選択されている項目テキストを得る
int[] 変数 = List.getSelectedIndexes();
選択されている複数のインデックス番号を得る
String[] 変数 = List.getSelectedItems();
選択されている複数の項目テキストを得る
List.select(int数);
指定したインデックス番号またはテキストの項目を選択する
boolean 変数 = List.isIndexSelected(int値);
引数で指定したインデックス番号の項目が選択されているか否かを得る
boolean 変数 = List.isMultipleMode();
現在の複数選択状態を返す
List.setMultipleMode(boolean値);
複数選択状態を設定する

AWT Choiceによるポップアップボタンのイベント

■コンストラクタ
new Choice();
■項目の編集
Choice.add(String);
Choice.insert(String,int値);
Choice.remove(String);
Choise.remove(int値);
Choice.removeAll();
String:項目のテキスト
int値:項目のインデックス番号
■イベント
項目選択時のイベント
ItemEvent:ItemListenerを組み込んで処理する
■項目利用のメソッド
String 変数 = Choice.getItem(int値);
引数指定したインデックス番号の項目テキストを得る
int 変数 = Choice.getItemCount();
項目数を得る
int 変数 = Choice.getSelectedIndex();
現在選択されている項目のインデックス番号を得る
String 変数 = Choice.getSelectedItem();
現在選択されている項目テキストを得る

AWT テキスト入力のイベント

■TextFieldのコンストラクタ
1行だけのテキスト入力を行う
new TextField();
new TextField(列数);
new TextField(String);
new TextField(String,列数);
列数:表示する文字数を示すint値
String:初期状態で表示されるテキスト
■イベント
Enterを押すことによりActinEventが発生する
ActionEvent:ActionListenerを組み込んで処理する
■TextAreaのコンストラクタ
複数行のテキスト入力を行う
new TextArea();
new TextArea(行数,列数);
new TextArea(String);
new TextArea(String,行数,列数);
new TextArea(String,行数,列数,TextAreaのフィールド);
String:表示するテキスト
行数,列数:表示する行数と列数を示すint値
TextAreaのフィールド:表示するスクロールバーを示すTextAreaのクラスフィールド
(TextArea.SCROLLBARS_BOTH:垂直・水平の両方を表示,
TextArea.SCROLLBARS_HORIZONTAL_ONLY:水平方向を表示,
TextArea.SCROLLBARS_VERTICAL_ONLY:垂直方向を表示)

AWT ラジオボタンとCheckboxGroupのイベント

複数のボタンの中から1つだけ選択する
■Checkboxのコンストラクタ
new Checkbox(String,Boolean値,CheckboxGroup);
new Checkbox(String,checkboxGroup,Boolean値);
■CheckboxGroupのコンストラクタ
new Checkbox();
■CheckboxGroupのメソッド
CheckboxGroup.setSelectedCheckbox(checkbox);
引数に指定したcheckboxを選択する
Checkbox 変数 = CheckboxGroup.getSelectedCheckbox();
現在選択されているCheckboxインスタンスを返す

AWT チェックボックスのイベント

クリックすることでチェックマークをON/OFFする
■コンストラクタ
new Checkbox();
new Checkbox(String);
new Checkbox(String,boolean値);
■選択変更時のイベント
ItemEvent:ItemListenerを組み込んで処理する
■チェック状態に関数メソッド
boolean 変数 = Checkbox.getState();
現在のチェック状態をboolean値として得る
Checkbox.setState(boolean値);
引数に指定した値にチェック状態を変更する
■ItemListener組み込みメソッド
Checkbox.addItemListener(ItemListener)
ItemListener:組み込むItemListenerのクラスのインスタンス
■ItemListenerに用意されているイベント処理用メソッド
public void ItemStateChanged(ItemEvent e) { イベント処理 }