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 とそんなに違いはありません。
最初はどうしても、まごつきますが、これも小さなテストプログラムを
いくつも作ってみて、自分なりの財産にしてゆけばよいでしょう。
この記事へのコメントはこちら