複数選択モード(標準)
単一選択モード
連続した項目なら複数選択できるモード
サンプルダウンロード
解説
JListの複数選択/単一選択サンプルです。
JListの複数選択、単一選択を設定するにはJList.setSelectionModeを使います
設定できるのは以下の3パターンです
複数選択モード(標準)
- JList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
単一選択モード
- JList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
連続した項目なら複数選択できるモード
- JList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION)
ソース(単一選択になってます。切り替えはコメント解除でどうぞです)
import java.awt.Component;
import java.awt.ScrollPane;
import java.io.File;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.filechooser.FileSystemView;
/*
* JList複数選択/単一選択サンプル
* ・JListの複数選択、単一選択を設定するにはJList.setSelectionModeを使います
* ・設定できるのは以下の3パターンです
*
* 複数選択モード(標準)
* ・JList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
*
* 単一選択モード
* ・JList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
*
* 連続した項目なら複数選択できるモード
* ・JList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION)
*/
public class JListSingle extends JFrame {
JList list;
DefaultListModel model;
public JListSingle(String title) {
super(title);
init();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100, 100, 300, 200);
setVisible(true);
}
private void init() {
// 表示データ作成
File dir = new File("C:\\");
File[] childs = dir.listFiles();
// リストモデルを生成
model = new DefaultListModel();
// 表示データをリストモデルに設定
for (File file : childs) {
model.addElement(file);
}
// リストモデルを使ってJListを作成
list = new JList(model);
// MULTIPLE_INTERVAL_SELECTION = 複数選択モード(標準)
// list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// SINGLE_SELECTION = 一個だけ選択できるモード
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// SINGLE_INTERVAL_SELECTION = 連続した項目なら複数選択できるモード
// list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
// リストモデルは通常スクロールペインを使います。
ScrollPane sp = new ScrollPane();
sp.add(list);
// 自作のセルレンダラーを設定します
list.setCellRenderer(new FileListCellRenderer());
add(sp);
}
public static void main(String[] args) {
new JListSingle("JList複数選択/単一選択サンプル");
}
/**
* JList用のセルセンダラー
*/
class FileListCellRenderer extends DefaultListCellRenderer {
FileSystemView fs = FileSystemView.getFileSystemView();
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
// valueがFileクラスの場合、テキストとアイコンを設定します。
if (value instanceof File) {
File f = (File) value;
setText(fs.getSystemDisplayName(f));
setIcon(fs.getSystemIcon(f));
}
return this;
}
}
}
最終更新:2012年10月19日 01:54