LotosLabo

プログラミング技術とか気になった情報を載せていきます

Java GUIプログラミング3

テキストフィールド(テキストボックス)の表示


インターフェースの指定
import javax.swing.JTextField;


テキストフィールドの作成
JTextField text1 = new JTextField();
JTextField text2 = new JTextField(10)
;

テキストフィールドのサイズを()で指定する


または
text.setColumns(10)で指定できる

テキストフィールドの初期値

text.setText("文字");



テキストフィールドの透明、不透明

text.setOpaque(false);

falseで透明になる

※フォント、文字色、背景色、サイズについては今後殆ど変わらないので省略させていただきます。


キャレットの設定

キャレットとは、テキストフィールド内で文字を入力する位置に表示されているカーソルのこと。

キャレットのデフォルトは文字列に先頭に来ているので、初期値が入力されている場合は、文字列の末尾に動かしてあると便利である。


キャレットの指定
JTextField text = new JTextField("こんにちは");
text.setCaretPosition(2);


この場合だと「こん|にちは」となります

末尾に設定したい場合
text.setCaretPosition(text.getText().length());


キャレットに色を付けることもできる
text.setCaretColor(Color.RED);


入力された値の取得

値の取得
JTextField text = new JTextField("初期値");
String str = text.getText();

getText() で取得できる


選択された部分の値取得


String str = text.getSelectedText();


文字を選択状態にする


JTextField text = new JTextField("こんにちは");

text.select(0,2);

「こん」にちは ここまで指定されます。


全選択にしたい場合は

text.selectAll();


コントロールの編集可否、有効無効

text.setEditabled(false);

→ 編集不可になる


text.setEnabled(false);
text.setDisabledTExtColor(Color.BLACK);

→コントロールを無効化し、色を変える


コピー、カット、ペースト


text.copy();

text.cut();

text.paste();


これだけで指定できる

ツールチップの設定


ツールチップとはテキストフィールドにマウスを合わせた時の表示されるヒントのようなもの


JTextField text = new JTextField("こんにち");
text.setToolTipText("文字を入力してください");


パスワードフィールドの作成


インターフェースの指定
import javax.swing.JPasswordField;

フィールドの作成
JPasswordField pass = new JPasswordFiled(10);

()の中には文字制限数


パスワードの認証

JPasswordField pass = new JPasswordField(10);
char [] password = pass.getPassword();
String passwordstr = new String(password);


パスワードフィールドから取得した値が正しいかどうか判断します。
今回はサンプルコードを使って説明します。

<サンプル>

テキストフィールドにパスワードを入力
ボタンを入力
パスワードが正しいか間違いかのメッセージボックスを出す

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;

public class Test extends JFrame implements ActionListener{
  JPasswordField pass;

  public static void main(String args[]){
    Test frame = new Test("タイトル");
    frame.setVisible(true);
  }

  Test(String title){
    setTitle(title);
    setBounds(100, 100, 300, 250);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel p = new JPanel();

    JLabel label = new JLabel("パスワードを入力:");
    pass = new JPasswordField(10);

    JButton button = new JButton("確認");
    button.addActionListener(this);

    p.add(label);
    p.add(pass);
    p.add(button);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }

  public void actionPerformed(ActionEvent e){
    String password = new String(pass.getPassword());

    if (password.equals("0000")){
      JLabel label = new JLabel("認証に成功しました");
      JOptionPane.showMessageDialog(this, label, "成功",

JOptionPane.INFORMATION_MESSAGE);
    }else{
      JLabel label = new JLabel("パスワードが違います");
      JOptionPane.showMessageDialog(this, label, "失敗",

JOptionPane.ERROR_MESSAGE);
      pass.setText("");
    }
  }
}



今回は0000を入力すると成功するように設定しています。
ボタンのアクションの動作などは後で説明します。


f:id:lo25131:20140219152406j:plain

f:id:lo25131:20140219152411j:plain


簡易メッセージボックスの出し方


JOptionPane.showMessageDialog(this,label,"テスト",
JOptionPane.INFORMATION_MESSAGE);

OptionPaneで新しいペインを作成します。


パスワードの隠し文字設定


パスワードでは何を入力したかわからないように、同じ文字にします。これを「エコー文字」といいます。


エコー文字の設定
pas.setEchoChar('*');