java jlist_Swing开发之JList篇

由JList类代表的Swing列表显示一个可选取对象列表,它支持三种选取模式:单选取、单间隔选取和多间隔选取。

JList类把维护和绘制列表的工作委托给一个对象来完成。一个列表的模型维护一个对象列表,列表单元绘制器将这些对象绘制在列表单元中。

缺省情况下,列表单元绘制器是DefaultListCellRenderrer的实例,它绘制表17-1中列出的对象。图标和字符串按原样显示,而所有其他类型对象的绘制方式是:通过显示从这些对象的toString返回的字符串来绘制这些对象。

构造方法

JList()

构造一个使用空模型的 JList。

JList(ListModel dataModel)

构造一个 JList,使其使用指定的非 null 模型显示元素。

JList(Object[] listData)

构造一个 JList,使其显示指定数组中的元素。

JList(Vector> listData)

构造一个 JList,使其显示指定 Vector 中的元素。

常用方法

addListSelectionListener(ListSelectionListener listener)

为每次选择发生更改时要通知的列表添加侦听器。

addSelectionInterval(int anchor, int lead)

将选择设置为指定间隔与当前选择的并集。

createSelectionModel()

返回 DefaultListSelectionModel 实例。

getCellRenderer()

返回呈现列表项的对象。

getModel()

返回保存由 JList 组件显示的项列表的数据模型。

getSelectedIndex()

返回所选的第一个索引;如果没有选择项,则返回 -1。

getSelectedValue()

返回所选的第一个值,如果选择为空,则返回 null。

getSelectionModel()

返回当前选择模型的值。

isSelectionEmpty()

如果什么也没有选择,则返回 true。

setListData(Object[] listData)

根据一个 object 数组构造 ListModel,然后对其应用 setModel。

setListData(Vector> listData)

根据 Vector 构造 ListModel,然后对其应用 setModel。

setModel(ListModel model)

设置表示列表内容或“值”的模型,并在通知 PropertyChangeListener 之后清除列表选择。

setSelectedIndex(int index)

选择单个单元。

setSelectionMode(int selectionMode)

确定允许单项选择还是多项选择。

setSelectionModel(ListSelectionModel selectionModel)

将列表的 selectionModel 设置为非 null 的 ListSelectionModel 实现。

例 1:采用数组对象创建JList并设置JList背景颜色和边框

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.border.Border;

public class JListBackground extends JPanel {

private static final Color lightBlue = new Color(153, 204, 255);

public JListBackground() {

super();

setBackground(lightBlue);

}

public static void addComponentsToPane(Container pane) {

String[] bruteForceCode = { "int count = 0",

"int m = mPattern.length();",

"int n = mSource .length();",

"outer:",

" ++count;",

" }",

" return count;",

"}"

};

JList list = new JList(bruteForceCode);

Border etch = BorderFactory.createEtchedBorder();

list.setBorder(BorderFactory.createTitledBorder(etch, "Brute Force Code"));

JPanel listPanel = new JPanel();

listPanel.add(list);

listPanel.setBackground(lightBlue);

list.setBackground(lightBlue);

pane.add(listPanel, BorderLayout.CENTER);

pane.setBackground(lightBlue);

}

public static void main(String[] args) {

JFrame frame = new JFrame("Brute Force Algorithm");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

addComponentsToPane(frame.getContentPane());

frame.pack();

frame.setSize(800, 600);

frame.setVisible(true);

}

}

例 2:采用Vector对象创建JList对象

import java.util.Vector;

import javax.swing.JFrame;

import javax.swing.JList;

import javax.swing.JScrollPane;

public class StoringvalueinVectorandaddingthemintoJList {

public static void main(String[] a) {

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Vector months = new Vector();

JList list = new JList(months);

//用Vector对象创建JList,可以在创建后增加内容,而采用数组创建则不可以

months.addElement("January");

months.addElement("December");

frame.add(new JScrollPane(list));

frame.setSize(300, 200);

frame.setVisible(true);

}

}

例 3:改变JList中值

import java.awt.BorderLayout;

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.JList;

import javax.swing.JScrollPane;

public class ModifyModelSampleModelAction {

static String labels[] = { "A", "B", "C", "D", "E", "F", "G" };

public static void main(String args[]) {

JFrame frame = new JFrame("Modifying Model");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Fill model

final DefaultListModel model = new Defau

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值