値の追加と挿入

広告

setTextメソッドを使うとテキストエリアに値を設定することができますが、その場合既存の値を新しい値で置き換えることになります。ここではテキストエリアの値に追加や挿入する方法を確認します。

値の追加

そこで既存の値に他の値を追加したい場合にはJTextAreaクラスで定義されているappendメソッドを使います。

指定されたテキストをドキュメントの末尾に追加します。モデルが null の場合、あるいは文字列が 
null か空の場合には何も行いません。

パラメータ:
  str - 挿入するテキスト

追加したい文字列を表すStringクラスのオブジェクトを引数に指定して下さい。

実際の使い方は次のようになります。

JTextArea area = new JTextArea("今日の天気は");
area.append("曇りです");

上記の場合、テキストエリアの値は"今日の天気は曇りです"となります。

値の挿入

また最後に追加するのはではなく、任意の位置に挿入した場合にはJTextAreaクラスで定義されているinsertメソッドを使います。

指定されたテキストを指定の位置に挿入します。モデルが null の場合、あるいはテキストが null 
または空の場合は何も行いません。 

パラメータ:
  str - 挿入するテキスト
  pos - 挿入位置 >= 0 
例外:
  IllegalArgumentException - pos がモデル内の無効な位置にある場合

1番目の引数には追加したい文字列を表すStringクラスのオブジェクトを指定します。2番目の引数には挿入したい位置を表す数値を指定して下さい。先頭の文字の前の位置が0、先頭の位置と次の文字の間の位置が1となります。

実際の使い方は次のようになります。

JTextArea area = new JTextArea("今日の天気は曇りです");
area.insertappend("こんにちは。", 0);

上記の場合、テキストエリアの値は"こんにちは。今日の天気は曇りです"となります。

サンプルプログラム

では実際に試してみます。

SSample14_1.java

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.text.BadLocationException;

class SSample14_1 extends JFrame{

  JTextArea area;
  JTextField text;

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

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

    JPanel p = new JPanel();

    area = new JTextArea();
    area.setLineWrap(true);
    JScrollPane scrollpane = new JScrollPane(area);
    scrollpane.setPreferredSize(new Dimension(200, 120));

    p.add(scrollpane);

    JPanel bottomp = new JPanel();

    text = new JTextField(10);

    JButton button1 = new JButton("追加");
    button1.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent event){
          area.append(text.getText());
        }
      }
    );

    JButton button2 = new JButton("挿入");
    button2.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent event){
          try{
            area.insert(text.getText(), area.getLineStartOffset(1));
          }catch(BadLocationException e){
            System.out.println("Bad Location Error!");
          }
        }
      }
    );

    bottomp.add(text);
    bottomp.add(button1);
    bottomp.add(button2);

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

ではコンパイルを行った上で実行してみます。

値の追加と挿入

まずテキストエリアに文字列を入力します。その後で、画面下部のテキストフィールドに追加したい文字列を入力し、その後で「追加」ボタンを押すと、既存のテキストエリアの最後にテキストフィールドに入力した値が追加されます。

値の追加と挿入

値の追加と挿入

また画面下部のテキストフィールドに挿入したい文字列を入力し、その後で「挿入」ボタンを押すと、既存のテキストエリアの2行目の先頭にテキストフィールドに入力した値が追加されます。

値の追加と挿入

値の追加と挿入

※指定した行の先頭や最後のオフセットを取得する方法は「取得した値を1行毎に処理する」を参照して下さい。

( Written by Tatsuo Ikura )