1,簡単な配置法 | simpleな方法 一般的なaction |
2,レイアウト | setLayout Panel フォント |
簡単なAWTコントロールしか使わないときはもっと簡単な方法があります。
import java.applet.*; import java.awt.*; public class namae extends Applet { private Label m_label=new Label("何か入力してください"); private TextField m_textField=new TextField(10); private Button m_button=new Button("読んでください"); public void init() { resize(320, 240); add(m_label); add(m_textField); add(m_button); } public boolean action(Event evt,Object obj){ if (evt.target==m_button){ m_label.setText(m_textField.getText()); return true; } } }
最初に3つのコントロールのオブジェクトを作ります。
次に、initメソッドでコントロールを画面上に加えます(add)。
このとき、addした順に左上からコントロールが配置されます。
最後にイベントハンドラを作ります。
if (evt.target==m_button)でどのコントロールから発生したイベントかを
判断し、ボタンからだったらgetText()でテキストエリアの文字を得て
setTextで文字をセットします。
ただし、actionメソッドが常にm_buttonオブジェクトにアクセスできるとは
限らないのでこの方法は一般的ではありません。
通常はactionメソッドは次のようにします。
public boolean action(Event evt,Object obj){ if (evt.target instanceof Button && evt.arg=="読んでください"){ m_label.setText(m_textField.getText()); return true; } return false; }
if文の最初の条件はイベントがボタンから発生したものかを判断します。
しかし、それだけだとボタンが複数ある場合の判別ができません。
そこで、2番目にボタンのラベルが「読んでください」になっているかを判断します。
このようにactionメソッドの処理の仕方には2種類あります。
前者は簡単で、今のところこの方法で問題は起こりませんでした。
後者はMicrosoftが推奨する方法ですが、ラベルの文字を変更するとき
actionメソッドも修正する必要がありので手間がかかります。
「AWT(17KB)」で紹介した方法では
きれいにコントロールが配置されているとはいえません。
そこで、レイアウトを中心として解説します。
public void init() { resize(320, 240); setLayout(new BorderLayout()); add("North",m_label); add("West",m_textField); add("East",m_button); }
initメソッドではじめにsetLayout(new BorderLayout())を実行します。
そのあとに配置する場所とオブジェクトを指定します。
NorthとSouthは上下方向は必要なだけのスペースをとり、左右はめいっぱいとります。
反対にWestとEastは左右方向は必要なだけ、上下はめいっぱいとります。
Panelクラスを使うことによってもう少し複雑な配置もできます。
いままではコントロールを直接アプレットに張っていたのですが
今回は、コントロールをいったんPanelに配置し、次にPanelをアプレットに
張っていきます。図に示すと次のようになります。
今までの配置 | コントロール | 配置 −> |
アプレット | ||
Panelを使った配置 | コントロール | 配置 −> |
Panel | 配置 −> |
アプレット |
実際には次のようになります。
public void init() { resize(320, 240); setLayout(new BorderLayout()); Panel p=new Panel(); p.setLayout(new BorderLayout()); p.add("West",m_textField); p.add("East",m_button); add("North",m_label); add("South",p); }
ここでは、Panelのオブジェクトpを作成し、テキスト入力フォームとボタンを
配置しています。最後にアプレットにpを配置します。結果は次の通りです。
フォントの変更は次のようにすることによって簡単にできます。
public void init() { resize(320, 240); setFont(new Font("TimesRoman",Font.PLAIN,20)); setLayout(new BorderLayout()); Panel p=new Panel(); p.setLayout(new BorderLayout()); p.add("West",m_textField); p.add("East",m_button); add("North",m_label); add("South",p); }
結果、次のように大きなフォントになります。
C++のPageに戻る