Java Appletの解説
<10.ボタンの作り方>
処理の選択などに使われるボタンの作り方を解説します。
ボタン表示には大きくは、2つの方法があります。anonymous内部クラスでの方法と独立したリスナークラスの方法です。
1.独立したリスナークラスの方法の例
1.<Javaファイル>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class tebut1 extends Applet{
Button bt1,bt2;
Graphics g;
public void init(){g=getGraphics();
setBackground(Color.lightGray);
add(bt1=new Button("blue"));
add(bt2=new Button("reset"));
bt1.addActionListener(new MyListener());
bt2.addActionListener(new MyListener());
}
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt1){g.setColor(Color.blue);g.fillRect(0,0,199,199);}
else if(e.getSource()==bt2){g.setColor(Color.lightGray);g.fillRect(0,0,199,199);}
}}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例1.ここをクリックして下さい。
2.<解説>
1)import java.awt.event.*;
ボタンを押すとかイベント処理のパッケージ。
2)Button bt1,bt2;
bt1、bt2のボタン宣言。
3)add(bt1=new Button("blue"));
ボタン表示。ラベル(ボタンに表示される文字)は「blue」です
4)bt1.addActionListener(new MyListener());
リスナークラスを外部に定義する。
素人なので、よく分かりません。これはそのままパターンとして憶えるだけかと思います。
5)class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
リスナークラスの宣言。個々にどういう意味があるかは、分かりません。MyListenerは、前のものと同じ名前になります。
ここのクラスにボタンが押された時の処理を書きます。
6)if(e.getSource()==bt1){g.setColor(Color.blue);g.fillRect(0,0,199,199);}
bt1(blue)のボタンが押された時(e.getSource()==bt1),バックグランドの色を青にします(g.setColor(Color.blue);g.fillRect(0,0,199,199);)。
7)else if(e.getSource()==bt2){g.setColor(Color.lightGray);g.fillRect(0,0,199,199);}
bt2(reset)のボタンが押された時,バックグランドの色を灰色にします。
クラスとしては、tebut1.classとtebut1$Mylistener.classの2個ができます。
2.anonymous内部クラスでの方法
1.<Javaファイル>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class tebut2 extends Applet{
Button bt1,bt2;
public void init(){
setBackground(Color.lightGray);
add(bt1=new Button("blue"));
add(bt2=new Button("reset"));
bt1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setBackground(Color.blue);}
});
bt2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setBackground(Color.lightGray);}
});
}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
プログラムは違いますが、結果は同じですので省略します。
2.<解説>
1)bt1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
1.のように外部にクラス宣言はせず、ここでbt1の処理を記述します。
2)setBackground(Color.blue)
bt1(blue)のボタンが押された時,バックグランドの色を青にします。
クラスとしてtebut2$1.class、tebut2$2.classs、tebut2.classの3つができます。
この方法は、ボタンの数が多い時はむかないと思います。
3.ボタンの大きさ、色、場所指定
ボタンの大きさ、色、表示する場所を指定する方法です。
1.<Javaファイル>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class butt5 extends Applet{
Graphics g;
Button bt1,bt2,bt3;
public void init(){
setBackground(Color.lightGray);
g=getGraphics();
setLayout(null);
add(bt1=new Button("blue"));
add(bt2=new Button("red"));
add(bt3=new Button("black"));
bt1.setBackground(Color.blue);
bt1.setForeground(Color.black);
bt1.setFont(new Font("TimesRoman",Font.BOLD,20));
bt1.setSize(50,50);
bt1.setLocation(40,10);
bt2.setBackground(Color.red);
bt2.setForeground(Color.black);
bt2.setFont(new Font("TimesRoman",Font.BOLD,20));
bt2.setSize(50,50);
bt2.setLocation(100,10);
bt3.setBackground(Color.black);
bt3.setForeground(Color.white);
bt3.setFont(new Font("TimesRoman",Font.BOLD,20));
bt3.setSize(50,50);
bt3.setLocation(160,10);
bt1.addActionListener(new MyListener());
bt2.addActionListener(new MyListener());
bt3.addActionListener(new MyListener());
}
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt1){g.setColor(Color.blue);
g.fillRect(10,10,20,20);}
else if(e.getSource()==bt2){g.setColor(Color.red);
g.fillRect(10,10,20,20);}
else if(e.getSource()==bt3){ g.setColor(Color.black);
g.fillRect(10,10,20,20);}
}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例2.ここをクリックして下さい。
2.<解説>
1)setLayout(null);
これを宣言しないとレイアウト表示になるため任意の場所に表示することはできません。例1のように中央を中心として表示されます。
2)bt1.setBackground(Color.blue);
bt1の背景に色指定。この場合は青になります。
3)bt1.setForeground(Color.black);
ボタンの文字の色指定。この場合は黒になります。
4)bt1.setFont(new Font("TimesRoman",Font.BOLD,20));
ボタンの文字の大きさ、書体の指定。
5)bt1.setSize(50,50);
ボタンの大きさ指定。(x軸、y軸)
6)bt1.setLocation(40,10);
ボタンの場所指定。(x軸、y軸)
娯楽室の各部屋