ポリフォーズム
ポリフォーズムとは、一つの汎用インターフェイスを使用して、複数の異なる機能にアクセスするためのしくみ
カプセル化
プログラムコードとそれに関するデータの間のつながりを保護する。
カプセル化されたルーチンへのアクセスは厳密に制御されており、これにより不要な干渉を防ぐことができる
継承
一つのオブジェクトが他のオブジェクトの特性を受け継ぐプロセスのこと
継承を使うと階層的分類システムを実現することができる
目次
- C++用語
- AWT 正規表現
- AWT テキスト操作
- AWT 動的配列
- AWT 和暦
- AWT 日付のフォーマット
- AWT 日付の演算
- AWT 日時の値
- AWT タイマー
- AWT マルチスレッドの一時停止/再開
- AWT マルチスレッド
- AWT オブジェクトのアクセス
- HTML 基本
- AWT バイナリファイルのアクセス
- AWT テキストファイルのアクセス
- AWT グラフィック表示
- AWT ウインドウの状態変更のイベント
- AWT テキストの変更のイベント
- AWT コンテナのイベント
- AWT コンポーネントのイベント
- AWT フォーカス移動に関するイベント
- AWT KEY操作のイベント
- AWT MOUSE操作のイベント
- AWT 一覧を表示するListのイベント
- AWT Choiceによるポップアップボタンのイベント
- AWT テキスト入力のイベント
- AWT ラジオボタンとCheckboxGroupのイベント
- AWT チェックボックスのイベント
- ウィジェット,ガジェット
- firefoxとは
- ストックオプションとは?
- SQL参考サイト
- SI Object Brower
- 選択SQLの基本
2009年6月15日月曜日
2009年6月10日水曜日
AWT 正規表現
正規表現の主な記号
例.
^ 行の先頭を示す
$ 行の末尾を示す
. 任意の一文字を示す(改行文字は除く)
[] []内に書かれた文字のいずれか
[^] []内に書かれた文字以外のいずれか
[a-b] aからbまでの範囲のいずれか
* 直前の文字が0個以上連続している
+ 直前の文字が1個以上連続している
? 直前の文字が0個または1個
{a} 直前の文字がa個以上連続している
{a,b} 直前の文字がa個以上b個以下連続している
a|b aまたはb
例.
検索対象:大根は300円です。
検索文字:[o-9]+
置換文字:¥¥$0
置換結果:大根は¥300円です。
検索対象:This is java program.
検索文字:[a-zA-Z]+
置換文字:[$0]
置換結果:[This] [is] [java] [program].
検索対象:300,600,1000,2000,7000,11000,25000
検索文字:¥b[0-9]{4}¥b
置換文字:[$0]
置換結果:300,600,[1000],[2000],[7000],11000,25000
検索対象:私のメールアドレスはnagahashi@mac.comです。
検索文字:[0-9a-zA-Z.]+@[0-9a-zA-Z.]+
置換文字:[$0]
置換結果:私のメールアドレスは[nagahashi@mac.com]です。
検索対象:私のメールアドレスはnagahashi@mac.comです。nagahashi@yahoo.krもあります。
検索文字:[0-9a-zA-Z.]+@yahoo.(co.jp|com)
置換文字:[$0]
置換結果:私のメールアドレスは[nagahashi@mac.com]です。nagahashi@yahoo.krもあります。
検索対象:私のホームページはhttp://homepage.mac.com/nagahashi/です。
検索文字:http://[0-9a-zA-Z.]+/[0-9a-zA-Z./?=-_]*
置換文字:[$0]
置換結果:私のホームページは[http://homepage.mac.com/nagahashi/]です。
AWT テキスト操作
テキスト操作
Stringクラスのテキスト編集用メソッド
・文字の取得
・指定したテキストが最初に登場する位置のインデックス番号を取得する
・テキストの長さを取得する
・テキストの始まり/終わりが指定したテキストで始まり/終わりであるか調べる
・テキストの一部を取得
・テキストの置換
例.
注)ta1は表示されない
Stringクラスのテキスト編集用メソッド
・文字の取得
char 変数 = String.charAt(int値);
指定したインデックス位置の文字を取得する
・指定したテキストが最初に登場する位置のインデックス番号を取得する
int 変数 = String.indexOf(String);
・テキストの長さを取得する
int 変数 = String.length();
・テキストの始まり/終わりが指定したテキストで始まり/終わりであるか調べる
boolern 値 = String.startsWith(String);
boolern 値 = String.endsWith(String);
・テキストの一部を取得
String = String.substring(int値,int値);
開始位置から終了位置までを取得する
・テキストの置換
String = String.replace(char値,char値);
第一引数にある文字を全て第二引数の文字に置換する
String = String.replaceAll(String,String);
第一引数のテキストを検索し第二引数のテキストに置換する
例.
public class TextApp extends Frame implements ActionListener{
private static final long serialVersionUID = 1L;
TextArea ta1;
TextField tf1,tf2;
Button b1;
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
new TextApp();
}
public TextApp(){
this.setSize(300,200);
tf1 = new TextField(10);
tf2 = new TextField(10);
Panel p = new Panel();
p.add(tf1);
p.add(tf2);
this.add(p,BorderLayout.NORTH);
ta1 = new TextArea("12345",20,5,TextArea.SCROLLBARS_VERTICAL_ONLY);
this.add(p,BorderLayout.CENTER);
b1 = new Button("Click");
b1.addActionListener(this);
this.add(b1,BorderLayout.SOUTH);
this.setVisible(true);
}
public void actionPerformed(ActionEvent ev){
String str = ta1.getText();
str = str.replaceAll(tf1.getText(),tf2.getText());
ta1.setText(str);
}
}
注)ta1は表示されない
AWT 動的配列
動的配列
一般的に複数のオブジェクトを管理する専用のクラスとして「ArrayList」が使用される
要素編集用のメソッド
・インスタンスの追加
・要素を削除
・要素を取得
・要素数の取得
・全要素の取得
例.
一般的に複数のオブジェクトを管理する専用のクラスとして「ArrayList」が使用される
要素編集用のメソッド
・インスタンスの追加
ArrayList.add(Object);
引数がインスタンスのみの場合は最後に追加
ArrayList.add(int値,Object);
int値の位置にインスタンスを追加
・要素を削除
ArrayList.remove(int値);
指定したインデックス番号の要素を削除
ArrayList.removeRange(int値,int値);
指定したインデックス番号の範囲内の要素を削除
ArrayList.clear();
全要素を削除
・要素を取得
Object = ArrayList.get(int値);
引数指定したインデックス番号の要素を取得
・要素数の取得
int値 = ArrayList.size();
引数指定したインデックス番号の要素を取得
・全要素の取得
Object配列 = ArrayList.toArray();
インスタンスにある全要素を要素にもつObject配列を返す
例.
public class ArrayApp extends Frame{
ArrayList data;
public static void main(String[] args) {
new ArrayApp();
}
public ArrayApp(){
this.setSize(300,200);
data = new ArrayList();
this.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent ev){
clicked(ev);
}
});
}
public void clicked(MouseEvent ev){
Point p = ev.getPoint();
data.add(p);
this.repaint();
}
public void paint(Graphics g){
g.setColor(Color.red);
int n = data.size();
int[] x = new int[n];
int[] y = new int[n];
for(int i = 0 ; i < n ; i++){
Point p = (Point)data.get(i);
x[i] = p.x;
y[i] = p.y;
}
g.drawPolyline(x, y, n);
}
}
2009年6月9日火曜日
AWT 和暦
和暦
ロケール情報(地域や言語などに関する情報)を管理するクラス「Locale」を使用する
「Locale.setDefault」はデフォルトのロケール情報を引数に指定したものに設定する。
和暦を扱うためには
という形でLocaleを作成する
以降、西暦などのAD/BC表記を示すG記号で元号を表記するようになる。
例えば、「SimpleDateFormat」の引数に「GGGGyyyy年」という書き方をすると
「GGGG」=「平成」、「yyyy」=「20」となる
例.
public class WarekiApp extends Frame{
public static void main(String[] args) {
new WarekiApp();
}
public WarekiApp(){
this.setSize(300,200);
Label l1 = new Label();
l1.setFont(new Font("Serif",Font.BOLD,18));
this.add(l1,BorderLayout.CENTER);
Locale.setDefault(new Locale("jp","JP","JP"));
Calendar c1 = new GregorianCalendar();
SimpleDateFormat df = new SimpleDateFormat("GGGGyyyy年MM年dd日(E)");
l1.setText(df.format(c1.getTime()));
this.setVisible(true);
}
}
ロケール情報(地域や言語などに関する情報)を管理するクラス「Locale」を使用する
「Locale.setDefault」はデフォルトのロケール情報を引数に指定したものに設定する。
和暦を扱うためには
Locale.setDefault(new Local("ja","JP","JP"));
という形でLocaleを作成する
以降、西暦などのAD/BC表記を示すG記号で元号を表記するようになる。
例えば、「SimpleDateFormat」の引数に「GGGGyyyy年」という書き方をすると
「GGGG」=「平成」、「yyyy」=「20」となる
例.
public class WarekiApp extends Frame{
public static void main(String[] args) {
new WarekiApp();
}
public WarekiApp(){
this.setSize(300,200);
Label l1 = new Label();
l1.setFont(new Font("Serif",Font.BOLD,18));
this.add(l1,BorderLayout.CENTER);
Locale.setDefault(new Locale("jp","JP","JP"));
Calendar c1 = new GregorianCalendar();
SimpleDateFormat df = new SimpleDateFormat("GGGGyyyy年MM年dd日(E)");
l1.setText(df.format(c1.getTime()));
this.setVisible(true);
}
}
AWT 日付のフォーマット
パターン作成用に用意されているパターン文字
例.
フォーマット済みテキストを得る
引数にはCalendarのgetTimeを利用してDateインスタンスを渡すようにする
例.
G:紀元(西暦)
y:年
M:月
w:年における週
W:月における週
D:年における日
d:月における日
F:月における曜日
E:曜日
a:午前/午後
H:一日における時(0~23)
k:一日における時(1~24)
K:午前/午後の時(0~11)
h:午前/午後の時(1~12)
m:分
s:秒
S:ミリ秒
z:タイムゾーン(一般的なタイムゾーン)
Z:タイムゾーン(RFC 822 タイムゾーン)
例.
"yyyy/M/d" ⇒ "2008/8/5"
"yy年MM月dd日" ⇒ "08年08月05日"
フォーマット済みテキストを得る
引数にはCalendarのgetTimeを利用してDateインスタンスを渡すようにする
String = DateFormat.format(DATE);
例.
public class DateFormatApp extends Frame{
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
new DateFormatApp();
}
public DateFormatApp(){
this.setSize(300,200);
Label l1 = new Label();
l1.setFont(new Font("Serif",Font.BOLD,18));
this.add(l1,BorderLayout.CENTER);
Calendar c1 = new GregorianCalendar();
SimpleDateFormat df = new SimpleDateFormat("MM月dd日(E)~Gyyyy年~");
l1.setText(df.format(c1.getTime()));
this.setVisible(true);
}
}
AWT 日付の演算
特定の要素の値を得る
引数には取り出す要素を示すCalendarクラスのフィールドを指定する
例えばCalendarから日を示す値を得たい場合は「get(Calendar.DATE)」とする
特定の要素の値を変更する
Calendarの特定要素の値を変更する
引数には要素を示すCalendarクラスのフィールドと設定値を指定する方法と、年月日などの全て指定する方法がある
例えば日の値を「10」に変更したい場合は「set(Calendar.DATE,10)」とし、年月日を「2001年12月24日」にしたい場合は「set(2001,12,24)」とする
特定の要素の値を加算する
特定の要素を加算する
例えば「123日を加算する」には「add(Calendar.DATE,123)」とする
基準日時から経過時間を得る
Javaの時間関係の基準となる1970年1月1日午前0時からの経過ミリ秒を得る
例.2000年元旦からの経過日数と今日から1000日後の日付を計算しlabelに表示する
引数には取り出す要素を示すCalendarクラスのフィールドを指定する
例えばCalendarから日を示す値を得たい場合は「get(Calendar.DATE)」とする
int 変数 = Calendar.get(フィールド);
特定の要素の値を変更する
Calendarの特定要素の値を変更する
引数には要素を示すCalendarクラスのフィールドと設定値を指定する方法と、年月日などの全て指定する方法がある
例えば日の値を「10」に変更したい場合は「set(Calendar.DATE,10)」とし、年月日を「2001年12月24日」にしたい場合は「set(2001,12,24)」とする
Calendar.set = (フィールド,int値);
Calendar.set = (年,月,日);
Calendar.set = (年,月,日,時,分);
Calendar.set = (年,月,日,時,分,秒);
特定の要素の値を加算する
特定の要素を加算する
例えば「123日を加算する」には「add(Calendar.DATE,123)」とする
GregorianCalendar.add(フィールド,int値)
基準日時から経過時間を得る
Javaの時間関係の基準となる1970年1月1日午前0時からの経過ミリ秒を得る
long 変数 = Calendar.getTimeInMillis();
例.2000年元旦からの経過日数と今日から1000日後の日付を計算しlabelに表示する
public class Calendar2App extends Frame{
public static void main(String[] args) {
new Calendar2App();
}
public Calendar2App(){
this.setSize(300,200);
Label l1 = new Label();
l1.setFont(new Font("Serif",Font.BOLD,14));
Label l2 = new Label();
l2.setFont(new Font("Serif",Font.BOLD,14));
Panel p1 = new Panel(new GridLayout(2,1));
p1.add(l1);
p1.add(l2);
this.add(p1,BorderLayout.CENTER);
//2000.1.1と今日のCalendarを用意する
Calendar c1 = new GregorianCalendar(2000,1,1);
Calendar c2 = new GregorianCalendar();
c2.set(c2.get(Calendar.YEAR),c2.get(Calendar.MONTH),c2.get(Calendar.DATE));
//差の計算
long num1 = c1.getTimeInMillis();
long num2 = c2.getTimeInMillis();
int n = (int)((num2-num1)/1000/60/60/24);
//今日から1000日後の計算
c1.add(Calendar.DATE,1000);
int y = c2.get(Calendar.YEAR);
int m = c2.get(Calendar.MONTH);
int d = c2.get(Calendar.DATE);
l1.setText("2000年元旦から今日までの日数:" + n);
l2.setText("今日から1000日後の日付:" + y + "/" + (m+1) + "/" + d);
this.setVisible(true);
}
}
2009年6月8日月曜日
AWT 日時の値
・Calendarクラス
カレンダー(暦)のクラス
このクラス自体が抽象クラスで、これを継承して様々な暦のクラスを用意して使う
「GregorianCalender」グレゴリオ暦のクラスが用意されており、通常は西暦による日時はこれを使用する。
・グレゴリオ暦による日時を示す
引数は日時を示す
引数を省略した場合は現在の日時を示すインスタンスとなる
・Dateクラス
各国語の表記や時差などに対応する機能をもっていなかったりするので、あまり使用されない。
日時は「GregorianCalender」グレゴリオ暦のクラスを通常は使用するが、Calenderの内部でDateが重要な働きをしているので使い方は覚えておくこと
日時のテキスト表現を得る場合、CalendarからgetTimeでDateインスタンスを取得し、そのtoStringを使う
例.
カレンダー(暦)のクラス
このクラス自体が抽象クラスで、これを継承して様々な暦のクラスを用意して使う
「GregorianCalender」グレゴリオ暦のクラスが用意されており、通常は西暦による日時はこれを使用する。
・グレゴリオ暦による日時を示す
引数は日時を示す
引数を省略した場合は現在の日時を示すインスタンスとなる
new GregorianCalendar();
new GregorianCalendar(年,月,日);
new GregorianCalendar(年,月,日,時,分);
new GregorianCalendar(年,月,日,時,分,秒);
年,月,日,時,分,秒:各日時の値を示すint値
・Dateクラス
各国語の表記や時差などに対応する機能をもっていなかったりするので、あまり使用されない。
日時は「GregorianCalender」グレゴリオ暦のクラスを通常は使用するが、Calenderの内部でDateが重要な働きをしているので使い方は覚えておくこと
日時のテキスト表現を得る場合、CalendarからgetTimeでDateインスタンスを取得し、そのtoStringを使う
Date = Calendar.getTime();
String = Date.toString();
例.
public class CalenderApp extends Frame implements Runnable{
Label l1;
public static void main(String[] args) {
new CalenderApp();
}
public CalenderApp(){
this.setSize(300,200);
l1 = new Label();
l1.setFont(new Font("Serif",Font.BOLD,18));
this.add(l1,BorderLayout.CENTER);
new Thread(this).start();
this.setVisible(true);
}
public void run(){
while(true){
Calendar c = new GregorianCalendar();
l1.setText(c.getTime().toString());
try{
Thread.sleep(100);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
2009年6月6日土曜日
AWT タイマー
・Timerクラス
タイマーの機能を提供するクラス
実行する処理をスケジューリングすることで指定の処理を定期的に呼び出す
・TimerTaskクラス
Timerで実行する処理のタスク
これを継承したクラスを新たに用意し、その中にrunメソッドとしてタイマーによる処理を用意する
①TimerTaskを継承したクラスを用意し、そこにタイマーで実行する処理をrunメソッドとして用意する
②タイマーを開始する場合は、TimerとTimerTask継承クラスのインスタンスをnewで作成する(Timer/TimerTaskのコンストラクタ)
③「schedule」メソッドを使ってTimerTask継承クラスのインスタンスをスケジューリングする(スケジューリングのメソッド)
④指定されたスケジュールにTimerTask継承クラスのrunメソッドが実行される
途中でタイマーを停止する場合はcancelメソッドを呼び出す
例.
タイマーの機能を提供するクラス
実行する処理をスケジューリングすることで指定の処理を定期的に呼び出す
・TimerTaskクラス
Timerで実行する処理のタスク
これを継承したクラスを新たに用意し、その中にrunメソッドとしてタイマーによる処理を用意する
①TimerTaskを継承したクラスを用意し、そこにタイマーで実行する処理をrunメソッドとして用意する
class クラス extends TimerTask{
public void run(){
タイマーで実行する処理
}
}
②タイマーを開始する場合は、TimerとTimerTask継承クラスのインスタンスをnewで作成する(Timer/TimerTaskのコンストラクタ)
Timer = new Timer();
TimerTask = new TimerTask;
③「schedule」メソッドを使ってTimerTask継承クラスのインスタンスをスケジューリングする(スケジューリングのメソッド)
Timer.schedule(TimerTask,遅延時間);
Timer.schedule(TimerTask,Date);
Timer.schedule(TimerTask,遅延時間,繰り返し間隔);
Timer.schedule(TimerTask,Date,繰り返し間隔);
遅延時間:スタートするまでの遅延時間(ミリ秒単位のlong型)
繰り返し間隔:呼び出す間隔(ミリ秒単位のlong型)
Date:開始する時刻を示すDateインスタンス
④指定されたスケジュールにTimerTask継承クラスのrunメソッドが実行される
途中でタイマーを停止する場合はcancelメソッドを呼び出す
Timer.cancel();
例.
public class TimerApp extends Frame implements ActionListener{
Button b1;
Panel p1;
int num = 1;
public static void main(String[] args) {
new TimerApp();
}
public TimerApp(){
this.setSize(300,200);
p1 = new Panel();
this.add(p1,BorderLayout.CENTER);
b1 = new Button("Click");
b1.addActionListener(this);
this.add(b1,BorderLayout.SOUTH);
this.setVisible(true);
}
public void actionPerformed(ActionEvent ev){
p1.setLayout(new GridLayout(num++,1));
Random rnd = new Random();
TimeLabel tl1 = new TimeLabel();
tl1.end = rnd.nextInt(90)+10;
tl1.delay = rnd.nextInt(2500)+500;
p1.add(tl1);
p1.doLayout();
}
}
class TimeLabel extends Label{
int num = 0;
int end = 100;
int delay = 1000;
boolean kiss_of_death = false;
TimeLabel(){
this.setText("count: 0");
this.setFont(new Font("SansSerif",Font.BOLD,18));
this.setForeground(Color.BLUE);
Timer t = new Timer();
t.schedule(new TimeLabelTask(),0,delay);
}
class TimeLabelTask extends TimerTask{
public void run(){
setText("count: "+ num++);
if(num == end){
num = 0;
}
}
}
}
2009年6月5日金曜日
AWT マルチスレッドの一時停止/再開
・synchronized文
オブジェクト同期の為のもの
ブロック内の処理を行っている間、引数に指定したインスタンスに外部からアクセスできないようにする
・スレッドの一時停止
notify/notifyAllが呼び出されるまでスレッドを待機させる。
引数はタイムアウト時間で、タイムアウトすると自動的にスレッドが再開する。
・スレッドの再開
notify:オブジェクトのモニタで待機中のスレッドを1つ再開する。
notifyAll:オブジェクトのモニタで待機中の全てのスレッドを再開する
例.
public class MultiApp2 extends Frame implements ActionListener{
private static final long serialVersionUID = 1L;
Button b1;
Panel p1;
int num =1;
public static void main(String[] args) {
new MultiApp2();
}
public MultiApp2(){
this.setSize(300,200);
p1 = new Panel();
this.add(p1,BorderLayout.CENTER);
b1 = new Button("Click");
b1.addActionListener(this);
this.add(b1,BorderLayout.SOUTH);
this.setVisible(true);
}
public void actionPerformed(ActionEvent ev){
p1.setLayout(new GridLayout(num++,1));
Random rnd = new Random();
TimeLabel tl1 = new TimeLabel();
tl1.end = rnd.nextInt(90) + 10;
tl1.delay = rnd.nextInt(2500) + 500;
p1.add(tl1);
p1.doLayout();
}
}
class TimeLabel extends Label implements Runnable {
/**
*
*/
private static final long serialVersionUID = 1L;
int num = 0;
int end = 100;
int delay = 1000;
boolean kiss_of_death = false;
boolean pending = false; // 一時停止用フラグ
TimeLabel(){
this.setText("count: 0");
this.setFont(new Font("SansSerif",Font.BOLD,18));
this.setForeground(Color.blue);
this.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent ev){
setPending(!pending);
}
});
new Thread(this).start();
}
public void run(){
while(!kiss_of_death){
this.setText("count: " + num++);
if(num == end){
num=0;
}
try{
Thread.sleep(delay);
synchronized(this){
if(pending){
wait(); // 一時停止
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
// 一時停止/再開を行うメソッド
public synchronized void setPending(boolean f){
pending = f;
if(pending){
setForeground(Color.red);
}
else{
setForeground(Color.blue);
notify();
}
}
}
オブジェクト同期の為のもの
ブロック内の処理を行っている間、引数に指定したインスタンスに外部からアクセスできないようにする
synchronized(インスタンス){
実行する処理
}
・スレッドの一時停止
notify/notifyAllが呼び出されるまでスレッドを待機させる。
引数はタイムアウト時間で、タイムアウトすると自動的にスレッドが再開する。
Object.wait();
Object.wait(long値);
・スレッドの再開
notify:オブジェクトのモニタで待機中のスレッドを1つ再開する。
notifyAll:オブジェクトのモニタで待機中の全てのスレッドを再開する
Object.notify();
Object.notifyAll();
例.
public class MultiApp2 extends Frame implements ActionListener{
private static final long serialVersionUID = 1L;
Button b1;
Panel p1;
int num =1;
public static void main(String[] args) {
new MultiApp2();
}
public MultiApp2(){
this.setSize(300,200);
p1 = new Panel();
this.add(p1,BorderLayout.CENTER);
b1 = new Button("Click");
b1.addActionListener(this);
this.add(b1,BorderLayout.SOUTH);
this.setVisible(true);
}
public void actionPerformed(ActionEvent ev){
p1.setLayout(new GridLayout(num++,1));
Random rnd = new Random();
TimeLabel tl1 = new TimeLabel();
tl1.end = rnd.nextInt(90) + 10;
tl1.delay = rnd.nextInt(2500) + 500;
p1.add(tl1);
p1.doLayout();
}
}
class TimeLabel extends Label implements Runnable {
/**
*
*/
private static final long serialVersionUID = 1L;
int num = 0;
int end = 100;
int delay = 1000;
boolean kiss_of_death = false;
boolean pending = false; // 一時停止用フラグ
TimeLabel(){
this.setText("count: 0");
this.setFont(new Font("SansSerif",Font.BOLD,18));
this.setForeground(Color.blue);
this.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent ev){
setPending(!pending);
}
});
new Thread(this).start();
}
public void run(){
while(!kiss_of_death){
this.setText("count: " + num++);
if(num == end){
num=0;
}
try{
Thread.sleep(delay);
synchronized(this){
if(pending){
wait(); // 一時停止
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
// 一時停止/再開を行うメソッド
public synchronized void setPending(boolean f){
pending = f;
if(pending){
setForeground(Color.red);
}
else{
setForeground(Color.blue);
notify();
}
}
}
AWT マルチスレッド
・threadクラス
スレッド機能を提供するクラス。
これをextendsして新たなクラスを定義し、その中にマルチスレッドで実行したい処理を用意する。
・Runnableインターフェイス
スレッド機能を提供するインターフェイス。
これをimplementsしたクラスを用意し、その中にマルチスレッドで実行したい処理を用意する。
・「threadクラス」と「Runnableインターフェイス」の違い
「threadクラス」はインスタンスの作成のみ
「Runnableインターフェイス」は「new Thread」としてスレッドインスタンスを作成し、その引数にrunを含むインスタンスを指定する
例.
解説
・new Thread(this).start();
startすることによりrunスレッドが新スレッドで実行される。
スレッド機能を提供するクラス。
これをextendsして新たなクラスを定義し、その中にマルチスレッドで実行したい処理を用意する。
class クラス extends Thread{
public void run(){
マルチスレッドで実行する処理
}
}
変数 = new クラス()
変数.start();
・Runnableインターフェイス
スレッド機能を提供するインターフェイス。
これをimplementsしたクラスを用意し、その中にマルチスレッドで実行したい処理を用意する。
class クラス implements Runnable{
public void run(){
マルチスレッドで実行する処理
}
}
変数 = new Thread(this)
変数.start();
・「threadクラス」と「Runnableインターフェイス」の違い
「threadクラス」はインスタンスの作成のみ
「Runnableインターフェイス」は「new Thread」としてスレッドインスタンスを作成し、その引数にrunを含むインスタンスを指定する
例.
public class MultiAPP extends Frame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
Button b1;
Panel p1;
int num =1;
public static void main(String[] args) {
new MultiAPP();
}
public MultiAPP(){
this.setSize(300,200);
p1 = new Panel();
this.add(p1,BorderLayout.CENTER);
b1 = new Button("Click");
b1.addActionListener(this);
this.add(b1,BorderLayout.SOUTH);
this.setVisible(true);
}
public void actionPerformed(ActionEvent ev){
p1.setLayout(new GridLayout(num++,1));
Random rnd = new Random();
TimeLabel tl1 = new TimeLabel();
tl1.end = rnd.nextInt(90) + 10;
tl1.delay = rnd.nextInt(2500) + 500;
p1.add(tl1);
p1.doLayout();
}
}
class TimeLabel extends Label implements Runnable {
int num = 0;
int end = 100;
int delay = 1000;
boolean kiss_of_death = false;
TimeLabel(){
this.setText("count: 0");
this.setFont(new Font("SansSerif",Font.BOLD,18));
this.setForeground(Color.blue);
new Thread(this).start();
}
public void run(){
while(!kiss_of_death){
this.setText("count: " + num++);
if(num == end){
num=0;
}
try{
Thread.sleep(delay);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
解説
・new Thread(this).start();
startすることによりrunスレッドが新スレッドで実行される。
2009年6月3日水曜日
AWT オブジェクトのアクセス
オブジェクトの書き出し
①FileOutputStreamインスタンスの作成
②FileOutputStreamを元にBufferedOutputStreamインスタンスの作成
③BufferedOutputStreamを元にXMLEncoderインスタンスの作成
④データを書き込む
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
オブジェクトの読み込み
①FileInputStreamインスタンスの作成
②FileInputStreamを元にBufferedInputStreamインスタンスの作成
③BufferedInputStreamを元にXMLDecoderインスタンスの作成
④データを読み込む
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
例.
①FileOutputStreamインスタンスの作成
FileOutputStream os = new FileOutputStream(ファイル名)
②FileOutputStreamを元にBufferedOutputStreamインスタンスの作成
BufferedOutputStream = new BufferedOutputStream(FileOutputStreamインスタンス);
③BufferedOutputStreamを元にXMLEncoderインスタンスの作成
XMLEncoder = new XMLEncoder(BufferedOutputStreamインスタンス);
④データを書き込む
xml.writeObject(TextAreaインスタンス);
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
xml.close()
オブジェクトの読み込み
①FileInputStreamインスタンスの作成
FileInputStream is = new FileInputStream(ファイル名)
②FileInputStreamを元にBufferedInputStreamインスタンスの作成
BufferedInputStream = new BufferedInputStream(FileInputStreamインスタンス);
③BufferedInputStreamを元にXMLDecoderインスタンスの作成
XMLDecoder = new XMLDecoder(BufferedInputStreamインスタンス);
④データを読み込む
TextArea newTA = (TextArea)xml.readObject();
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
xml.close()
例.
public class ObjectApp extends Frame implements ActionListener{
Button b1,b2;
TextArea ta;
public static void main(String[] args) {
new ObjectApp();
}
public ObjectApp(){
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(){
FileInputStream is = null;
BufferedInputStream bis = null;
XMLDecoder xml = null;
try{
is = new FileInputStream("sample.txt");
bis = new BufferedInputStream(is);
xml = new XMLDecoder(bis);
TextArea newTA = (TextArea)xml.readObject();
this.remove(ta);
ta = null;
ta = newTA;
this.add(ta,BorderLayout.CENTER);
this.doLayout();
} catch(Exception ex){
ex.printStackTrace();
} finally {
try{
xml.close();
} catch(Exception ex2){
ex2.printStackTrace();
}
}
}
public void save(){
FileOutputStream os = null;
BufferedOutputStream bos = null;
XMLEncoder xml = null;
try{
os = new FileOutputStream("sample.txt");
bos = new BufferedOutputStream(os);
xml = new XMLEncoder(bos);
xml.writeObject(ta);
Random rnd = new Random();
int r = rnd.nextInt(256);
int g = rnd.nextInt(256);
int b = rnd.nextInt(256);
ta.setForeground(new Color(r,g,b));
} catch(Exception ex){
ex.printStackTrace();
} finally {
try{
xml.close();
} catch (Exception ex2){
ex2.printStackTrace();
}
}
}
}
2009年6月1日月曜日
HTML 基本
・HTMLタグのエスケープ
htmlでは『&,<,>,","』をエスケープ処理を行う必要がある
&⇒&
<⇒<
>⇒>
"⇒"
\⇒"
・リンクを貼るには
・シンタックスハイライタ(Syntax Highlighter)
色付けしたコードを表示する
使用可能な言語(下記例の「java」部を修正)
c,c++,c#,css,delphi,html,java,js,
pascal,php,python,ruby,sql,vb,xml
・太字出力時
htmlでは『&,<,>,","』をエスケープ処理を行う必要がある
&⇒&
<⇒<
>⇒>
"⇒"
\⇒"
・リンクを貼るには
<a href="アドレス">表示名称</a>
・シンタックスハイライタ(Syntax Highlighter)
色付けしたコードを表示する
使用可能な言語(下記例の「java」部を修正)
c,c++,c#,css,delphi,html,java,js,
pascal,php,python,ruby,sql,vb,xml
<pre name="code" class="java">
・
・
・
</pre>
・太字出力時
<b>
・
・
・
</b>
AWT バイナリファイルのアクセス
バイナリファイルの書き出し
①FileOutputStreamインスタンスの作成
②FileOutputStreamを元にBufferedOutputStreamインスタンスの作成
③BufferedOutputStreamを元にDataOutputStreamインスタンスの作成
④データを書き込む
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
バイナリファイルの読み込み
①FileInputStreamインスタンスの作成
②FileInputStreamを元にBufferedInputStreamインスタンスの作成
③BufferedInputStreamを元にDataInputStreamインスタンスの作成
④データを読み込む
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
例.
①FileOutputStreamインスタンスの作成
FileOutputStream os = new FileOutputStream(ファイル名)
②FileOutputStreamを元にBufferedOutputStreamインスタンスの作成
BufferedOutputStream = new BufferedOutputStream(FileOutputStreamインスタンス);
③BufferedOutputStreamを元にDataOutputStreamインスタンスの作成
DataOutputStream = new DataOutputStream(BufferedOutputStreamインスタンス);
④データを書き込む
boolearn 変数 = DataOutputStream.writeBoolean();
char 変数 = DataOutputStream.writeChar();
byte 変数 = DataOutputStream.writeByte();
int 変数 = DataOutputStream.writeInt(); 等
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
DataOutputStream.close()
バイナリファイルの読み込み
①FileInputStreamインスタンスの作成
FileInputStream is = new FileInputStream(ファイル名)
②FileInputStreamを元にBufferedInputStreamインスタンスの作成
BufferedInputStream = new BufferedInputStream(FileInputStreamインスタンス);
③BufferedInputStreamを元にDataInputStreamインスタンスの作成
DataInputStream = new DataInputStream(BufferedInputStreamインスタンス);
④データを読み込む
boolearn 変数 = DataInputStream.readBoolean();
char 変数 = DataInputStream.readChar();
byte 変数 = DataInputStream.readByte();
int 変数 = DataInputStream.readInt(); 等
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
DataInputStream.close()
例.
public class BinaryFile extends Frame implements ActionListener{
Button b1,b2;
TextArea ta;
public static void main(String[] args) {
new BinaryFile();
}
public BinaryFile(){
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(){
FileInputStream is = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
try{
is = new FileInputStream("sample.txt");
bis = new BufferedInputStream(is);
dis = new DataInputStream(bis);
int r = dis.readInt();
int g = dis.readInt();
int b = dis.readInt();
String s = dis.readUTF();
ta.setForeground(new Color(r,g,b));
ta.setText(s);
} catch(Exception ex){
ex.printStackTrace();
} finally {
try{
dis.close();
} catch(Exception ex2){
ex2.printStackTrace();
}
}
}
// バイナリファイル書き込み
public void save(){
FileOutputStream os = null;
BufferedOutputStream bos = null;
DataOutputStream dos = null;
try{
os = new FileOutputStream("sample.txt");
bos = new BufferedOutputStream(os);
dos = new DataOutputStream(bos);
Random rnd = new Random();
Color c = ta.getForeground();
int r = c.getRed();
int g = c.getGreen();
int b = c.getBlue();
String s = ta.getText();
dos.writeInt(r);
dos.writeInt(g);
dos.writeInt(b);
dos.writeUTF(s);
dos.flush();
r = rnd.nextInt(256);
g = rnd.nextInt(256);
b = rnd.nextInt(256);
ta.setForeground(new Color(r,g,b));
} catch(Exception ex){
ex.printStackTrace();
} finally {
try{
dos.close();
} catch (Exception ex2){
ex2.printStackTrace();
}
}
}
}
2009年5月29日金曜日
AWT テキストファイルのアクセス
テキストファイルの書き出し
①FileWriteインスタンスの作成
②FileWriterを元にBufferedWriterインスタンスを作成
③BufferedWriterのメソッドを呼び出しテキストを書き出す
④バッファ内に残ったデータを全て書き出す
⑤書き出しが終了したらcloseメソッドによりストリームを開放する
テキストファイルの読み込み
①FileReaderインスタンスを作成
②FileReaderを元にBufferedReaderインスタンスを作成
③BufferedReaderのメソッドを呼び出しテキストを読み込む
④テキストストリームにあるテキストを全て一括して読み込むことは出来ないため一行ずつ読み込みString変数に設定する
⑤読み出しが終了したらcloseメソッドによりストリームを開放する
例.
①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インスタンスを得る
②イメージファイルからイメージを読み込みImageインスタンスとして返す
③イメージを表示する
・イメージファイル(JPEG,GIF,PNG)の描画(paint以外で描画)
マウスをクリックしたら描画をする
・Graphicsを取得する
コンポーネントのGraphicsインスタンスのコピーを返す
Graphics g = this.getGraphics();
・Graphicsを破棄する
Graphicsインスタンスを破棄する
Graphics.dispose();
・イメージファイル(JPEG,GIF,PNG)の描画(imageインスタンスを使用したバッファリング)
マウスをクリックしたら描画をする
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)
ウインドウの状態が変更されたときに呼び出される
ウインドウのアイコン化や最大化されたときに発生する
WindowEvent:WindowStateListenerを組み込んで処理する
■WindowStateListenerの組み込み
ウインドウ.addWindowStateListener(WindowStateListener);
■WindowStateListenerのイベント処理用メソッド
public void windowStateChanged(WindowEvent ev)
ウインドウの状態が変更されたときに呼び出される
AWT テキストの変更のイベント
■イベント
テキストが変更されたときに呼び出されるイベント
TextEvent:TextListenerを組み込んで処理する
■TextListenerの組み込み
コンポーネント.addTextListener(TextListener);
■TextListenerのイベント処理用メソッド
public void textValueChanged(TextEvent ev)
テキストが変更されたときに呼び出される
テキストが変更されたときに呼び出されるイベント
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)
コンポーネントが取り除かれたときに呼び出される
コンテナにコンポーネントを組み込まれたり、除かれたりした時のイベント
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)
コンポーネントがリサイズされたときに呼び出される
コンポーネントを移動したりリサイズした時のイベント
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();
フォーカス変更に関するもう一方のコンポーネントを得る
コンポーネント.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キーが押されていたかを返す
コンポーネント.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キーが押されていたか得る
マウスボタンの操作イベント
コンポーネント.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値);
複数選択状態を設定する
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();
現在選択されている項目テキストを得る
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:垂直方向を表示)
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インスタンスを返す
■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) { イベント処理 }
■コンストラクタ
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) { イベント処理 }
2009年4月30日木曜日
ウィジェット,ガジェット
・ウィジェットとは、アプリケーションソフトやデスクトップ上で動作する、小規模なアクセサリーソフトのこと。
グラフィカルユーザインターフェースを構成する部品要素、およびその集まり→ウィジェット・ツールキット。「window gadget」の合成語ともいわれる。
・ガジェットとは、一般に道具、装置、仕掛けのことを言いますが、インターネットの世界ではソフトウェアアプリケーションソフトやデスクトップ上で動作する、小規模なアクセサリーソフトのことを指す。
・ウィジェットもガジェットも呼び名こそ違うが、共に「デスクトップ上に置く小規模なアクセサリーソフト」と、同じものと理解していただいて構わない。
「Yahoo!」や「マッキントッシュ」ではウィジェットと呼び、「Google」や「ウィンドウズ」ではガジェットと呼ぶ。
グラフィカルユーザインターフェースを構成する部品要素、およびその集まり→ウィジェット・ツールキット。「window gadget」の合成語ともいわれる。
・ガジェットとは、一般に道具、装置、仕掛けのことを言いますが、インターネットの世界ではソフトウェアアプリケーションソフトやデスクトップ上で動作する、小規模なアクセサリーソフトのことを指す。
・ウィジェットもガジェットも呼び名こそ違うが、共に「デスクトップ上に置く小規模なアクセサリーソフト」と、同じものと理解していただいて構わない。
「Yahoo!」や「マッキントッシュ」ではウィジェットと呼び、「Google」や「ウィンドウズ」ではガジェットと呼ぶ。
2009年4月29日水曜日
firefoxとは
Mozilla.orgがリリースする、World Wide Web ブラウザコンポーネントの正式名称。通称Firefox。
Firebirdという名前で知られていたが、0.8のリリース時にFirefoxと改名。
Firebirdという名前で知られていたが、0.8のリリース時にFirefoxと改名。
2009年4月27日月曜日
ストックオプションとは?
会社(企業)の役員や従業員が、一定期間内に、あらかじめ決められた価格で、所属する会社から自社株式を購入できる権利をいう。
株価が上がれば上がるほど、社員や役員が得られる利益も大きくなるため、業績に貢献した役員らのボーナス(賞与)として利用する企業が多い。
株価が上がれば上がるほど、社員や役員が得られる利益も大きくなるため、業績に貢献した役員らのボーナス(賞与)として利用する企業が多い。
2009年3月29日日曜日
2009年3月28日土曜日
選択SQLの基本
■テーブルの全フィールド抽出
■指定フィールド抽出
■条件
数値比較
文字列比較
日付比較(文字列比較と同様)
間隔指定
条件で「<」,「>」を記述する場合は以下の通り
「<」⇒「<」
「>」⇒「>」
「<=」⇒「<=」
「>=」⇒「>=」
■ソート
■ワイルドカード
通常、WHERE句に文字列を記述する場合はシングルコーテーション('')で記述する。(下記)
ワイルドカードは「%」にて記載することが可能
但し、間隔指定ではワイルドカードは記述できない。(意味が不明だから)
■条件(IN,ANY,NOT等)
■条件(副問い合わせ)通常はJOINを使用するが・・・
WHERE句にSELECTを記述する
WHERE フィールド名 IN (SELECT フィールド名 FROM テーブル名2 WHERE フィールド名=1) ※副問い合わせで複数の結果があるので「=」ではなく「IN」を使用
■パラメータ「:はORACL @はSQLサーバ,?は順次パラメータ(ACCESS)」
WHERE句の検索条件をパラメータ入力する場合は「:パラメータ名」で記述する
■JOIN(テーブルとテーブルの結合)
エイリアス:テーブル別名を記述することによりテーブル名を短縮する
SELECT フィールド名 * FROM テーブル名1 エイリアス名1
INNER JOIN テーブル名2 エイリアス名2
ON 条件(エイリアス名1:テーブル名1.フィールド名1 = エイリアス名2:テーブル名2.フィールド名2
(例)
・INNER JOIN ⇒ 主テーブル,子テーブル両方に含まれる全データ
・LEFT OUTER JOIN ⇒ 主テーブルの全データと紐付く子テーブルのデータ
LEFT (OUTER 省略可能) JOIN テーブル名 ON
・RIGHT OUTTER JOIN あまり使用しない
RIGHT (OUTER 省略可能) JOIN テーブル名 ON
■コメント
「--」でその行をコメント
範囲指定は「/*」~「*/」
SELECT * FROM テーブル名1
■指定フィールド抽出
SELECT フィールド1,フィールド2 FROM テーブル名1
■条件
SELECT フィールド1 FROM テーブル名1 WHERE 条件1
数値比較
SELECT フィールド1 FROM テーブル名1 WHERE フィールド2=BBB
SELECT フィールド1 FROM テーブル名1 WHERE フィールド2<BBB
文字列比較
SELECT フィールド1 FROM テーブル名1 WHERE フィールド2='BBB'
日付比較(文字列比較と同様)
SELECT フィールド1 FROM テーブル名1 WHERE フィールド2='20090327'
間隔指定
SELECT フィールド1 FROM テーブル名1 WHERE フィールド2 BETWEEN '20090327' AND '20090427'
条件で「<」,「>」を記述する場合は以下の通り
「<」⇒「<」
「>」⇒「>」
「<=」⇒「<=」
「>=」⇒「>=」
■ソート
SELECT フィールド1 FROM テーブル名1 WHERE 条件1 ORDER BY フィールド名2 ASC(昇順 省略可能)
SELECT フィールド1 FROM テーブル名1 WHERE 条件1 ORDER BY フィールド名2 DESC(降順)
SELECT フィールド1 FROM テーブル名1 WHERE 条件1 ORDER BY フィールド名2, フィールド名3 DESC
⇒ WHERE句に複数条件字はAND OR を記述。その他の句は(,)区切り
■ワイルドカード
通常、WHERE句に文字列を記述する場合はシングルコーテーション('')で記述する。(下記)
SELECT フィールド名 FROM テーブル名 WHERE フィールド名1='文字列'
ワイルドカードは「%」にて記載することが可能
SELECT フィールド名 FROM テーブル名 WHERE フィールド名1='文字%'
⇒’文字’が先頭のフィールド
SELECT フィールド名 FROM テーブル名 WHERE フィールド名1='%文字'
⇒’文字’が巻末のフィールド
SELECT フィールド名 FROM テーブル名 WHERE フィールド名1='%文字%'
⇒’文字’を含むフィールド
但し、間隔指定ではワイルドカードは記述できない。(意味が不明だから)
SELECT フィールド1 FROM テーブル名1 WHERE フィールド2 BETWEEN LIKE 'ア%' AND LIKE 'オ%'
⇒SELECT フィールド1 FROM テーブル名1 WHERE フィールド2 BETWEEN LIKE 'ア' AND LIKE 'オ'で「ア」から「オ」迄となる。「アカ」も含む
■条件(IN,ANY,NOT等)
SELECT フィールド名 FROM テーブル名 WHERE フィールド名1 IN(1,2,3,5,7,11)
⇒1,2,3,5,7,11に当てはまる。但し、IN句よりEXISTS句の方がパフォーマンス大
SELECT フィールド名 FROM テーブル名 WHERE フィールド名1 NOT IN(1,2,3,5,7,11)
⇒1,2,3,5,7,11に当てはまらない
SELECT フィールド名 FROM テーブル名 WHERE フィールド名1 >= ANY(100,200)
⇒100以上もしくは200以上
■条件(副問い合わせ)通常はJOINを使用するが・・・
WHERE句にSELECTを記述する
select フィールド名 FROM テーブル名
WHERE フィールド名 IN (SELECT フィールド名 FROM テーブル名2 WHERE フィールド名=1) ※副問い合わせで複数の結果があるので「=」ではなく「IN」を使用
■パラメータ「:はORACL @はSQLサーバ,?は順次パラメータ(ACCESS)」
WHERE句の検索条件をパラメータ入力する場合は「:パラメータ名」で記述する
select フィールド名 FROM テーブル名 WHERE フィールド名 =:パラメータ名
■JOIN(テーブルとテーブルの結合)
エイリアス:テーブル別名を記述することによりテーブル名を短縮する
SELECT フィールド名 * FROM テーブル名1 エイリアス名1
INNER JOIN テーブル名2 エイリアス名2
ON 条件(エイリアス名1:テーブル名1.フィールド名1 = エイリアス名2:テーブル名2.フィールド名2
(例)
SELECT
MTN.BMNCD
,BMN.BMNNM
FROM MTANTO MTN
INNER JOIN MBUMON BMN ON
MTN.BMNCD = BMN.BMNCD
・INNER JOIN ⇒ 主テーブル,子テーブル両方に含まれる全データ
SELECT テーブル名1.フィールド名1, テーブル名2.フィールド名1
INNER JOIN テーブル名1(主テーブル) ON 条件(テーブル名1.フィールド名1 = テーブル名2.フィールド名2
・LEFT OUTER JOIN ⇒ 主テーブルの全データと紐付く子テーブルのデータ
LEFT (OUTER 省略可能) JOIN テーブル名 ON
・RIGHT OUTTER JOIN あまり使用しない
RIGHT (OUTER 省略可能) JOIN テーブル名 ON
■コメント
「--」でその行をコメント
範囲指定は「/*」~「*/」
登録:
投稿 (Atom)