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

【Java】JTextFieldの入力値を読み取ってJListに追加する方法を解説

JListとは

JListはJComponentクラスのサブクラスで、ユーザーが単一選択または複数選択を行えるSwingのリストコンポーネントです。ただし、JListクラス自体にはスクロールバーの機能が備わっていないため、スクロールバーを表示したい場合はJScrollPaneクラスと組み合わせて使用します。JScrollPaneでJListをラップすれば、スクロールバーは自動的に管理されます。

DefaultListModelで項目を管理する

DefaultListModelクラスは、リストモデルのシンプルな実装を提供しており、JListに表示される項目を管理するために利用できます。DefaultListModelのaddElement()メソッドを呼び出すことで、JListに新しい項目(要素)を追加できます。さらに、テキストフィールド(JTextField)から入力された値を読み取り、その値をそのままJListに追加することも可能です。

実装例:JTextFieldの入力値をJListに追加する

以下のサンプルでは、テキストフィールドに文字列を入力してEnterキーを押すと、その入力値がJListに追加されます。テキストフィールドをクリックするとガイド用の初期テキストが消え、項目を追加した後は再びガイド用テキストが表示される仕組みになっています。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JTextfieldToJListTest extends JFrame {
   private DefaultListModel model;
   private JList list;
   private JTextField jtf;
   public JTextfieldToJListTest() {
      setTitle("JTextfieldToJList Test");
      model = new DefaultListModel();
      jtf = new JTextField("Type something and Hit Enter");
      jtf.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent me) {
            jtf.setText("");
         }
      });
      list = new JList(model);
      list.setBackground(Color.lightGray);
      jtf.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent event) {
            model.addElement(jtf.getText());
            JOptionPane.showMessageDialog(null, jtf.getText());
            jtf.setText("Type something and Hit Enter");
         }
      });
      add(jtf, BorderLayout.NORTH);
      add(new JScrollPane(list), BorderLayout.CENTER);
      setSize(375, 250);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new JTextfieldToJListTest();
   }
}

コードのポイント

  • ActionListenerの登録: JTextFieldにaddActionListener()を設定すると、Enterキーが押されたタイミングでactionPerformed()が呼び出されます。
  • model.addElement(): getText()で取得した入力文字列をDefaultListModelに追加することで、JListの表示に即座に反映されます。
  • JOptionPane.showMessageDialog(): 追加された入力値をダイアログで確認表示しています。
  • JScrollPane: JListをJScrollPaneで包むことで、項目数が増えても自動的にスクロールできるようになります。
  • MouseAdapter: テキストフィールドがクリックされた際に、ガイド用テキストをクリアする処理を行っています。

実行結果

【Java】JTextFieldの入力値を読み取ってJListに追加する方法を解説

プログラムを実行すると、上部のテキストフィールドに文字列を入力してEnterキーを押すたびに、その値が中央のリストに順次追加されていきます。この仕組みを応用すれば、タスクリストや簡易的な登録フォームなど、さまざまなGUIアプリケーションに活用できます。

  1. Java SwingのJCheckBoxで一度に1つの項目だけを選択する方法(ButtonGroupの使い方)

    JCheckBoxとは JCheckBoxはJToggleButtonを継承したSwingコンポーネントで、チェック済みか未チェックのいずれかの状態を持つ小さなボックスとして画面に表示されます。 ユーザーがJCheckBoxをクリックすると、チェック状態と未チェック状態が自動的に切り替わります。 チェックボックスの状態が変化すると、ActionListenerやItemListenerが発生し、イベント処理を行うことができます。 isSelected()メソッドを使うと、そのチェックボックスが選択されているかどうかを判定できます。 デフォルトの状態では、複数のチェックボックスを同時に選択す

  2. JavaのJMenuからJTabbedPaneに新しいタブを追加する方法

    JTabbedPaneとはJTabbedPaneは、JComponentクラスを継承したSwingコンポーネントの一つで、複数のパネルをタブ形式で簡単に切り替えられるようにするUI部品です。各タブには1つのコンポーネントが関連付けられており、そのタブが選択されると対応するコンポーネントが表示されます。JTabbedPaneは、タブが選択されたタイミングでChangeListenerインターフェースを通じてイベントを発生させることができます。JTabbedPaneの主なメソッドには、add()、addTab()、fireStateChanged()、createChangeListener()、