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

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

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

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

■GUI部品の分類
入力系  :JTextField、JTextArea、JList、JComboBox
出力系  :JLabel、JDialog
選択系  :JRadioButton、JCheckBox、JList、JComboBox
クリック系:JButton、JMenuBar

あとタブパネルやレイアウトマネージャ等のコンテナ系ぐらいにGUI部品はジャンル分できます。
今回は出力のみに特化してるといってもほとんど問題ないJLabelクラスの回です

■JLabelクラス
この部品は「表示」という名目しかなくそこそこ扱いやすい部品です。
機能面ではたいしたことないけどユーザビリティ(使用者の視覚的情報のわかりやすさ)としてはとても重要なのでほかの部品の注釈として必要不可欠なものです

コンストラクタ

コンストラクタ引数説明
new JLabel()なし文字列を表示する部品(文字列未設定)を生成
new JLabel(String text)文字列引数の文字列を表示する部品
new JLabel(Icon icon)画像ファイルオブジェクト画像を表示する部品

メソッド

メソッド名返却値引数説明
setIcon(Icon icon)なし画像ファイル引数の画像を表示する
setText(String text)なし表示する文字列引数の文字列を表示する
setDisabledIcon(Icon disabledIcon)void無効用画像ファイル無効状態(編集不可)の時に表示する画像を設定
setEnabled(boolean enable)void編集可能フラグtrue:編集可能 false:編集不可 この部品の編集可否を設定
getIcon()Iconなし表示されている画像情報を取得
getText()Stringなし表示されている文字列を取得
getDisabledIcon()Iconなし無効状態の時に表示する画像情報を取得
setFont(Font font)なし書式情報設文字列の書式情報を設定
setForeground(Color color)なし色情報表示する文字列の色を設定
setBackGround(Color color)なし色情報背景色を設定する
getEnabled()booleanなし編集可否情報を取得
getFont()Fontなし設定されている書式情報を取得
getForeground()Colorなし設定されている文字色を取得
getBackground()Colorなし背景色を取得
  • setEnabled(boolean enable)の補足
  • GUI部品の状態を設定するメソッドは2つある。
    1つは表示するための状態を設定する「setVisible(boolean visible)」
    もう1つはイベント処理の発生は判断する「setEnabled(boolean enable)」です。JLabelだとわかりにくいが、ボタン等の部品では誤った操作をしないように部品を一時的に無効にしておくことがあるので「setEnabled(boolean enable)」はほとんどの人が利用しないみたいだけどけっこう重要なメソッドでもある


    ■サンプルコード
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.util.Random;
    public class GuiThread extends JFrame implements ActionListener{
    JButton start;
    JPanel p;
     int click = 0;
    public static void main(String [] arges){
    GuiThread gui = new GuiThread();
    gui.setVisible(true);
    }
    GuiThread(){
    this.setTitle("JavaでGUIその1");
    this.setSize(300,200);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    p = new JPanel();
    this.add(p,BorderLayout.CENTER);
    start = new JButton("開始");
    start.addActionListener(this);
    this.add(start,BorderLayout.WEST);
    }
    public void actionPerformed(ActionEvent e){
    click++;
    if(click!=5){
    Random r = new Random();
    TLabel t1 = new TLabel(click);
    t1.cnt = r.nextInt(90)+10;
    p.add(t1);
    p.doLayout();
    }
    }
    }
    class TLabel extends JLabel implements Runnable{
    int num = 0;
    int cnt = 100;
    private boolean flag = false;
    public TLabel(int click){
    this.setText("カウンター" + "TLabel" + num);
    //this.setForground(Color.White);
    new Thread(this).start();
    }
    public void run(){
    while(!flag){
    num++;
    this.setText("カウンター"  + num);
    if(num==cnt) num=0;
    try{
    Thread.sleep(1000);
    }catch(InterruptedException e){
    }
    }
    }
    }
    実行結果
    JLabelという部品はただ文字列を表示するだけ(表示パターンはどの部品よりも多いが、)なのでスレット処理も混ぜてみました。

    『開始』をクリックするごとにJLabelオブジェクトが生成されてスレット制御でカウントアップしていく。

    JLabelという部品汎用性の高いメソッドばかり(というかほとんど・・・)で構成されてます。
    なので今回紹介したメソッドは他の部品でも扱います。