テキストを折り返す

ここまでの手順は、前述した JList と似ています。さらに、TextArea では、1行に収まらないテキストをどのように折り返すかを指定できます。

    public void setLineWrap(boolean wrap)
public void setWrapStyleWord(boolean word)

メソッド setLineWrap(boolean) は、行を折り返すかどうかを指定します。引数 wrap に true を指定すると、1行に収まらないテキストを折り返します。メソッド setWrapStyleWord(boolean) は、行を折り返すときに単語で区切るかどうかを指定します。引数 word に true を指定すると、単語の区切りで折り返します。false を指定すると、単語の途中でも関係なく右端で折り返されます。
先に示したように、Jython では、コンストラクターにキーワード引数を指定できます。このとき、Java と違って、冗長な set は不要です。すると、次のように、

    view = JTextArea(
lineWrap=True,
wrapStyleWord=True,

簡潔で見通しのよいコードを記述できます。

テキストファイルの内容を表示する

ここまでは、表示したいテキストが「固定である」という仮定に基づいてきました。実際には、各チームごとに表示する情報が異なるので、工夫が必要です。


【例題2】TextArea にテキストファイルの内容を表示したい。

テキストファイルの内容を読み込んで、テキスト領域に表示するとともに、先頭行までスクロールします。これを実現したのが、次のコードです。

def ex_JTextArea_append():
view = JTextArea(
lineWrap=True,
wrapStyleWord=True,
)
name = "Teams/ITA.txt"
for e in file(name).readlines():
view.append(e)
view.caretPosition = 0

frame = JFrame(
defaultCloseOperation=JFrame.EXIT_ON_CLOSE,
title=name,
size=(220, 100),
)
frame.add(JScrollPane(view))
frame.show()

TextArea に追加したいテキストがあるなら、次のメソッドが便利です。

    public void append(String str)
public void setCaretPosition(int position)

メソッド append(String) は、引数 str に指定した文字列を、テキスト領域の末尾に追加します。メソッド setCaretPosition(boolean) は、引数 position に指定した位置に、キャレットを移動します。すると、その位置までスクロールします。


Previous|3/5|Next