whichのブログ ~プログラミング体験記~ -9ページ目

whichのブログ ~プログラミング体験記~

主にJava,vVsual C#,Andoroid,SQLについて
覚え基本た文法やプログラミング技法、各クラスの利用法を
忘れないように形にしたものです

初心者だとかプロだとか特に意識せず利用してもらえるとうれしいです。

■JButtonクラス
ボタンを押すというシンプルでオーソドックスなGUI 部品です。

コンストラクタ

コンストラクタ引数説明
new JButton()なしクリック可能なボタンを生成
new JButton(String text)文字列クリック可能なボタン(文字列が表示されている)を生成
new JButton(Icon icon)画像ファイルオブジェクトクリック可能なボタン(画像が表示されている)を生成 
コンストラクタは特徴的というよりは汎用的なものでJLabel とあまり変わりません。
メソッドはJLabelクラスと同じメソッドが用意されていて(継承元クラスが同じだから)設定系のメソッドは全て同じものです。
ただ、JButtonという部品はイベント発生がともなうためイベントリスナー設定用メソッドとイベント処理用のメソッドがいくつかあるため全く一緒ではありません。

■サンプル
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIButton extends JFrame implements ActionListener{
/*フォント*/
final Font f1 = new Font("serif",Font.PLAIN,18);
final Font f2 = new Font("serif",Font.PLAIN,24);
final Font f3 = new Font("serif",Font.BOLD,18);
final Font f4 = new Font("serif",Font.ITALIC,18);
/*GUI 部品*/
JLabel text;
JButton btn;
public static void main(String [] arg){
JFrame frame = new GUIButton();
frame.setVisible(true);
}
public GUIButton(){
this.setTitle("JavaでGUIその2");
this.setSize(400,150);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
text = new JLabel("ここの文字列が変わります");
this.setLayout(new BorderLayout());
text.setBackground(Color.decode("#FFE4B5"));
text.setOpaque(true);
JPanel panel = new JPanel(new GridLayout(2,2));
btn = new JButton("最初の書式");
btn.setActionCommand("s");
btn.addActionListener(this);
panel.add(btn);
btn = new JButton("大きさが変わる");
btn.setActionCommand("w");
btn.addActionListener(this);
panel.add(btn);
btn = new JButton("太字");
btn.setActionCommand("b");
btn.addActionListener(this);
panel.add(btn);
btn = new JButton("斜体");
btn.setActionCommand("i");
btn.addActionListener(this);
panel.add(btn);
text.setFont(f1);
text.setForeground( Color.RED);
this.add(text,BorderLayout.CENTER);
this.add(panel,BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();
if(cmd.equals("s")){
text.setText("元の書式に戻りました");
text.setFont(f1);
}else if(cmd.equals("w")){
text.setText("文字が大きくなったよ!");
text.setFont(f2);
}else if(cmd.equals("b")){
text.setText("太字になりました!");
text.setFont(f3);
}else if(cmd.equals("i")){
text.setText("斜体になりました!");
text.setFont(f4);
}
}
}
実行結果

     4つボタンをクリックするとそれぞれの書式に上の文字列が変更される。

  
       「太字」をクリックした場合  「大きさが変わる」をクリックした場合

  
      「斜体」をクリックした場合    「最初の書式」をクリックした場合

GUI部品のメソッドは「共通機能の設定用メソッド」、「イベント処理系メソッド」、「独自機能設定用メソッド」の3つとそれぞれの設定情報を取得するためのメソッドで構成されています。
「共通機能の設定用メソッド」だけでできているがJLabelクラス(実際には多少独自メソッドがあるが実用性が低い)。
「イベント処理系メソッド」をいくつか用意してるのがJButtonやJTextField、JTextAreaのような基本部品。
「独自機能設定用メソッド」を持ているクラスというのが少なく紹介するのがもうしばらく後になるためしばらくはメソッドの紹介は割愛する可能性がある。