JavaでJTextAreaのテキスト方向を右から左(RTL)に設定する方法
JTextAreaは、JTextComponentクラスのサブクラスであり、テキストを表示したり、ユーザーが複数行のテキストを入力できるようにするためのSwingコンポーネントです。また、キャレット(テキストカーソル)の動きを監視したい場合は、CaretListenerインターフェースを実装することでイベントを取得できます。
デフォルトでは、JTextAreaのテキスト方向は左から右(LEFT_TO_RIGHT)に設定されています。しかし、アラビア語やヘブライ語など、右から左へ記述する言語を扱うアプリケーションでは、テキストを右から左(RIGHT_TO_LEFT)に入力できるようにする必要があります。このような場合には、JTextAreaクラスのsetComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)メソッドを使用します。
実装の手順
- JFrameを継承したクラスを作成し、コンストラクタ内でJTextAreaのインスタンスを生成します。
- setComponentOrientation()メソッドにComponentOrientation.RIGHT_TO_LEFTを引数として渡して呼び出します。
- JTextAreaをJScrollPaneに追加し、フレームの中央に配置します。
コード例
import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;
public class JTextAreaOrientationTest extends JFrame {
private JTextArea textArea;
public JTextAreaOrientationTest() {
setTitle("JTextAreaOrientation Test");
textArea = new JTextArea();
textArea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
add(new JScrollPane(textArea), BorderLayout.CENTER);
setSize(400, 275);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]) {
new JTextAreaOrientationTest();
}
}
実行結果
上記のプログラムを実行すると、以下のようにテキスト入力カーソルが右端から表示され、入力した文字が右から左へ流れていくことが確認できます。

まとめ
setComponentOrientation()メソッドは、JTextAreaだけでなく、JTextFieldやJLabelなど他の多くのSwingコンポーネントにも適用できます。多言語対応(国際化)アプリケーションを開発する際には、ロケールに応じてコンポーネントの方向を動的に切り替えることも可能なので、覚えておくと非常に便利です。
-
JavaのJCheckBoxに境界線(ボーダー)を設定する方法
JCheckBoxとは JCheckBoxはJToggleButtonを拡張したSwingコンポーネントの一つで、チェック済み(ON)と未チェック(OFF)の2つの状態を持つ選択肢を表します。複数のチェックボックスを配置した場合、それぞれが独立して動作するため、任意の組み合わせで同時に選択することが可能です。 境界線を設定する手順 JCheckBoxに境界線(ボーダー)を設定するには、次の2つのメソッドを使用します。 setBorder():コンポーネントに境界線を設定するメソッド。BorderFactoryクラスのファクトリメソッドを使って、さまざまな種類のボーダーを簡単に生成できます。
-
JavaのJTextAreaで行の折り返しと単語単位の折り返しを実装する方法
JTextAreaは、テキストを表示したり、ユーザーにテキストを入力させたりするための複数行対応のテキストコンポーネントです。JTextAreaコンポーネントの機能を実装する際には、CaretListenerインターフェースが活用されます。また、JTextAreaクラスは、JavaのJTextComponentクラスを継承しています。 以下の例では、JTextAreaクラスを実装し、ItemListenerインターフェースを使って、ユーザーが「word wrap(単語単位の折り返し)」と「line wrap(行の折り返し)」のチェックボックスを切り替えられるようにしています。 コード例 im