TextAreaとJTextAreaの違い

 

Java のアプリや本屋に並んでいる Javaプログラミング教本を見てみると、
Swing を使うものが多い気がします。
やはり Swing を使うものの方が(多少)見栄えが良いからでしょう。

毎度、管理人イガジーです。

まずAWTで作っておいて、Swingに置き換えるには、
Frame → JFrame
Label → JLabel
Button → JButton
Panel → JPanel
のように、J 付きのクラスに置き換えてゆくのですが、
ものによって違いがある(手がかかる)ものもあります。

TextArea → JTextArea
の場合は、単純に置き換えただけだと、スクロールバーが表示されなくなり
途方にくれるかもしれません。

JTextArea のスクロールは、次のようにJScrollPane()をかぶせて実現します。

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Sample {
	Sample() {
		JTextArea jt=new JTextArea();
	//	jt.setLineWrap(true);
		JScrollPane sc=new JScrollPane(jt);
		JFrame f=new JFrame();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.add(sc,BorderLayout.CENTER);
		f.setSize(200,200);
		f.setVisible(true);
	}
	public static void main(String[] args) {
		new Sample();
	}
}

JScrollPane()によるスクロールバーは賢くて、必要に応じて
出たり消えたりします(出しっぱなしにもできます)。

上記の例では、コメントにしていますが
// jt.setLineWrap(true);を活かすと、行を折り返すようになり
横(水平)スクロールバーは出なくなります。

JTextAreaでは、Tab幅も設定できます(ただし、フォントをMonospacedに
する必要があるようです)。

jt.setFont(new Font(Font.MONOSPACED,Font.PLAIN,12));
jt.setTabSize(4);

逆に言うと、Tab幅を変えたい場合はJTextAreaを使う(しかない)
という事になります。
Swing で作るにしても、慣れれば AWT とそんなに違いはありません。

最初はどうしても、まごつきますが、これも小さなテストプログラムを
いくつも作ってみて、自分なりの財産にしてゆけばよいでしょう。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。