タイトル
TOPJavaSwingJList → This Page

JList@Swing サンプル07

概要

Java - Swing - JList のサンプルです。
・項目の追加
・項目の削除
・項目の変更

解説

リスト項目の追加、削除、変更を行うサンプルです。

DefaultListModel クラス
メソッド内容
add(int index, Object element) 項目を指定インデックスに追加
addElement(Object obj) 項目を末尾に追加
clear() 全項目の削除
remove(int index) 指定インデックスの項目削除
removeRange(int fromIndex, int toIndex) 指定インデックス範囲の項目削除
set(int index, Object element) インデックスの項目値を変更

サンプルイメージ

サンプル画像


サンプルソース

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

/**
 * JList サンプル07
 * ・項目の追加
 * ・項目の削除
 * ・項目の変更
 * 
 * @author みっちー
 */
public class JList07 extends JFrame implements ActionListener {
	
	private static final long serialVersionUID = 1L;
	
	/** リストモデル */
	private DefaultListModel<String> listModel = null;
	
	/** リスト */
	private JList<String> list = null;
	
	/** テキスト */
	private JTextField text = null;
	
	/** ラベル */
	private JLabel label = null;
	
	
	/**
	 * 開始メソッド
	 * 
	 * @param args	パラメータ
	 */
	public static void main(String[] args) {
		JList07 frame = new JList07();
		
		// 閉じるボタンをクリックされた場合の動作を設定
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// ウインドウのタイトルを設定
		frame.setTitle("JList サンプル07");
		
		// フレームの X座標、Y座標、幅、高さを設定
		frame.setBounds(100, 200, 380, 220);
		
		// フレームを表示(これをしないと透明のフレームが立ち上がってしまう)
		frame.setVisible(true);
	}
	
	/**
	 * コンストラクタ
	 */
	public JList07() {
		// パネルを作成
		JPanel panelBase = new JPanel();
		
		// リストモデル
		listModel = new DefaultListModel<String>();
		listModel.addElement("AAAAA");
		listModel.addElement("BBBBB");
		listModel.addElement("CCCCC");
		
		// リストを作成
		list = new JList<String>(listModel);
		
		// スクロールを設定
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.getViewport().setView(list);
		scrollPane.setPreferredSize(new Dimension(80, 100));
		
		
		// テキストを作成
		text = new JTextField();
		text.setPreferredSize(new Dimension(80, 20));
		
		// ラベルを作成
		label = new JLabel();
		label.setPreferredSize(new Dimension(160, 20));
		label.setBorder(new BevelBorder(BevelBorder.LOWERED));
		
		// ボタンを作成
		JButton button1 = new JButton("addElement");
		JButton button2 = new JButton("add");
		JButton button3 = new JButton("remove");
		JButton button4 = new JButton("removeRange");
		JButton button5 = new JButton("allClear");
		JButton button6 = new JButton("change");
		
		button1.addActionListener(this);
		button2.addActionListener(this);
		button3.addActionListener(this);
		button4.addActionListener(this);
		button5.addActionListener(this);
		button6.addActionListener(this);
		
		// リスト、テキスト、ラベル、ボタンを追加
		panelBase.add(scrollPane);
		panelBase.add(text);
		panelBase.add(label);
		panelBase.add(button1);
		panelBase.add(button2);
		panelBase.add(button3);
		panelBase.add(button4);
		panelBase.add(button5);
		panelBase.add(button6);
		
		// パネルを追加
		getContentPane().add(panelBase);
	}
	
	/**
	 * イベント
	 * 
	 * @param e	イベント
	 */
	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		
		label.setText("");
		
		if (cmd.equals("addElement")) {
			// 末尾に追加
			if (text.getText().equals("")) {
				label.setText("テキストが空です");
				return;
			}
			
			listModel.addElement(text.getText());
			
		} else if (cmd.equals("add")) {
			if (text.getText().equals("")) {
				label.setText("テキストが空です");
				return;
			}
			
			if (!list.isSelectionEmpty()) {
				// 選択行の次に追加
				listModel.add(list.getSelectedIndex() + 1, text.getText());
			} else {
				label.setText("未選択です");
			}
			
		} else if (cmd.equals("remove")) {
			// 選択行を削除
			if (!list.isSelectionEmpty()) {
				listModel.remove(list.getSelectedIndex());
			} else {
				label.setText("未選択です");
			}
			
		} else if (cmd.equals("removeRange")) {
			// 選択範囲を削除
			if (!list.isSelectionEmpty()) {
				listModel.removeRange(list.getMinSelectionIndex(), list.getMaxSelectionIndex());
			} else {
				label.setText("未選択です");
			}
			
		} else if (cmd.equals("allClear")) {
			// 全て削除
			listModel.clear();
			
		} else if (cmd.equals("change")) {
			// 選択項目の変更
			if (text.getText().equals("")) {
				label.setText("テキストが空です");
				return;
			}
			
			if (!list.isSelectionEmpty()) {
				listModel.set(list.getSelectedIndex(), text.getText());
			} else {
				label.setText("未選択です");
			}
			
		}
	}
}

サンプルソースのダウンロード

ソースのダウンロード(Eclipse用のプロジェクトファイルも同梱)

更新履歴

2016/05/13 Windows 8.1 + Java 7 環境で全体を見直し
2008/01/25 新規作成


TOPJavaSwingJList → This Page