入力系 :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 | なし | 背景色を取得 |
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という部品汎用性の高いメソッドばかり(というかほとんど・・・)で構成されてます。
なので今回紹介したメソッドは他の部品でも扱います。