Javaでこの部品はどうやら2種類(使用方法がよくわからないのを合わせると3つ)あるみたいで、
大雑把に違いを言うと「入力できる行数」です
C#でこの部品は「TextBox」という部品が該当しておりプロパティの設定で複数行入力を設定できるためJavaみたいに複数のクラスに分けていない。
■JTextFieldクラス
1行のみ入力できる部品。
ボタン同様 使用頻度が高い部品であるが、この部品は初期設定が画面デザイン影響することもあるので独自メソッドを持っている
コンストラクタ
コンストラクタ | 引数 | 説明 |
---|---|---|
new JTextField() | なし | 1行のみの文字列入力できる(0行分入力可能)部品を生成 |
new JTextField(int column) | 列数 | 1行と引数で指定した列数分文字列入力できる部品を生成 |
new JTextField(String text,int column) | 文字列 列数 | 1行と引数で指定した列数分文字列入力できる部品を生成(初期入力値有り) |
引数なしのコンストラクタだと入力できないタイプの部品になる。もちろんこのクラスにもsetSize(int col , int row)メソッドでサイズ設定をするのだが、
1つだけ特殊なのが設定された入力可能文字数によってサイズが異なるという特徴を持つ
メソッド
メソッド名 | 返却値 | 引数 | 説明 |
---|---|---|---|
setColumns(int columns) | なし | 列数 | 入力可能文字数を設定する |
getColumns() | int | なし | 入力可能文字数を取得する |
このクラスのコンストラクタで入力文字数の表示上限(入力こそできるがこれを超えた文字列はみえない)を設定するものが新しく増えたため それに対応したメソッドも当然存在する。
■JTextAreaクラス
複数行入力できる部品。
JTextFieldを複数行入力できるようにしたもの
コンストラクタ
コンストラクタ | 引数 | 説明 |
---|---|---|
new JTextArea() | なし | 0行0列分文字列入力可能の部品を生成 |
new JTextArea(String text) | 文字列 | 0行0列分文字列入力可能の部品を生成(初期入力値有) |
new JTextArea(int row, int column) | 行数 列数 | 引数で指定された行数列数分の文字列入力可能の部品を生成 |
new JTextArea(String text, int row, int column) | 文字列 行数 列数 | 引数で指定された行数列数分の文字列入力可能の部品を生成(初期入力値有) |
引数なしのコンストラクタだと入力できないタイプの部品になる。もちろんこのクラスにもsetSize(int col , int row)メソッドでサイズ設定をするのだが、
1つだけ特殊なのが設定された入力可能文字数によってサイズが異なるという特徴を持つ
メソッド
メソッド名 | 返却値 | 引数 | 説明 |
---|---|---|---|
setColumns(int columns) | なし | 列数 | 入力可能文字数を設定する |
getColumns() | int | なし | 入力可能文字数を取得する |
setRows(int rows) | なし | 行数 | 入力可能文字行数を設定する |
getRows() | int | なし | 入力可能文字行数を取得する |
setTabSize(int size) | なし | タブ幅 | タブ幅を引数に設定する |
getTabSize() | int | なし | タブ幅を取得する |
setWrapStyleWord(boolean word) | なし | true 可能 false 不可 | テキストの折り返し設定 |
getWrapStyleWord() | boolean | なし | テキストの折り返し設定取得 |
JTextAreaの設定メソッドはメモ帳などのテキストエディタでイメージできるものばかりである。
■サンプル
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GUICHAT extends JFrame implements ActionListener{
JTextField nowText;
JTextArea fullText;
public static void main(String [] age){ new GUICHAT(); } //コンストラクタ内でJJFrameの設定全て完了ならOK
public GUICHAT(){
setTitle("JavaでGUIその3");
setSize(350,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JPanel client = new JPanel(new FlowLayout());
client.add(new JLabel("入力フォーム"));
JButton btn = new JButton("送信");
btn.addActionListener(this);
btn.setActionCommand("send");
nowText = new JTextField(15);
fullText = new JTextArea("受信したメッセージがここに順次表示されます。",20,20);
client.add(nowText);
client.add(btn);
add(client,BorderLayout.SOUTH);
add(fullText,BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("send")){
String str = fullText.getText();
fullText.setText(str+"\n"+nowText.getText());
nowText.setText("");
}
}
}
実行結果
試しに「Hellow!!」入力して「送信」ボタンを押してみましょう⇒
中央に入力した文字列が順次登録されていきます
これで「JLabel」「JButton」「JTextField」「JTextArea」が終わりました。
実をいうと今まで作ってきたサンプルはこの4つの部品だけでつくっています(CarldLayoutの回はちょっと違うが、)
つまり画面配置面だけ見るとこの4つはかなり基本的な部品に位置づけられ他の部品は「あれば処理の幅が広がって便利」程度の部品です。
ともあれ基本部品が終わったので次回はイベント処理についてでもやろうかな。