Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのJTextAreaで行の折り返しと単語単位の折り返しを実装する方法


JTextAreaは、テキストを表示したり、ユーザーにテキストを入力させたりするための複数行対応のテキストコンポーネントです。JTextAreaコンポーネントの機能を実装する際には、CaretListenerインターフェースが活用されます。また、JTextAreaクラスは、JavaのJTextComponentクラスを継承しています。

以下の例では、JTextAreaクラスを実装し、ItemListenerインターフェースを使って、ユーザーが「word wrap(単語単位の折り返し)」「line wrap(行の折り返し)」のチェックボックスを切り替えられるようにしています。

コード例

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JTextAreaTest {
    public static void main(String[] args ) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("JTextArea Test");
                frame.setSize(350, 275);
                final JTextArea textArea = new JTextArea(15, 65);
                frame.add(new JScrollPane(textArea));
                final JCheckBox wordWrap = new JCheckBox("word wrap");
                wordWrap.setSelected(textArea.getWrapStyleWord());
                wordWrap.addItemListener(new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent ie) {
                        textArea.setWrapStyleWord(wordWrap.isSelected());
                    }
                });
                frame.add(wordWrap, BorderLayout.NORTH);
                final JCheckBox lineWrap = new JCheckBox("line wrap");
                lineWrap.setSelected(textArea.getLineWrap());
                lineWrap.addItemListener(new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent ie) {
                        textArea.setLineWrap(lineWrap.isSelected());
                    }
                });
                frame.add(lineWrap, BorderLayout.SOUTH );
                frame.setLocationRelativeTo(null);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
                frame.setVisible(true);
            }
        });
    }
}

実行結果

JavaのJTextAreaで行の折り返しと単語単位の折り返しを実装する方法

このプログラムでは、setLineWrap(true)を呼び出すことでテキストがコンポーネントの幅に達した時点で自動的に改行され、さらにsetWrapStyleWord(true)を組み合わせることで、単語の途中で切れることなく単語単位で折り返されるようになります。チェックボックスの状態変更はItemListenerによって検出され、リアルタイムにJTextAreaへ反映されます。


  1. Javaで編集可能なJComboBoxを実装する方法【setEditable(true)の使い方を解説】

    JComboBoxとは JComboBoxはSwingが提供するGUIコンポーネントの一つで、JComponentクラスを継承しています。テキストフィールドとドロップダウンリストを組み合わせた部品であり、ユーザーはリストから値を選択することができます。 コントロールのテキストフィールド部分が編集可能に設定されている場合、ユーザーはフィールドに直接値を入力したり、ドロップダウンリストから取得した値を編集したりできます。 デフォルトでは、JComboBoxのテキストフィールド部分のデータは編集できないようになっています。ユーザーに編集を許可したい場合は、setEditable(true)メソッ

  2. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー