値の置き換え

広告

テキストエリアの値の一部を別の値に置き換えるにはJTextAreaクラスで定義されているreplaceRangeメソッドを使います。

指定された開始位置から終了位置までのテキストを、新しい指定テキストで置き換えます。モデルが 
null の場合は何も行いません。新しい文字列が null または空の場合は、単純に delete を実行し
ます。

パラメータ:
  str - 置き換えに使用するテキスト
  start - 開始位置 >= 0
  end - 終了位置 >= start 
例外:
  IllegalArgumentException - 範囲の一部がモデル内の無効な位置にある場合

1番目の引数に置き換える文字列を表すStringクラスのオブジェクト、2番目の引数に既存の値の中で置き換えたい値の開始位置、3番目の引数に終了位置を指定します。

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

JTextArea area = new JTextArea("今日の天気は曇りです");
area.replaceRange("快晴", 6, 8);

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

サンプルプログラム

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

SSample15_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 SSample15_1 extends JFrame{

  JTextArea area;
  JTextField text;

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

  SSample15_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 button = new JButton("置き換え");
    button.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent event){
          try{
            int start = area.getLineStartOffset(1);
            int end = area.getLineEndOffset(1);
            area.replaceRange(text.getText(), start, end - 1);
          }catch(BadLocationException e){
            System.out.println("Bad Location Error!");
          }
        }
      }
    );

    bottomp.add(text);
    bottomp.add(button);

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

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

値の置き換え

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

値の置き換え

値の置き換え

( Written by Tatsuo Ikura )