java swing中对于JList的使用(二)

本文介绍了一个使用Java Swing实现的简单应用,该应用通过JList组件展示长字符串列表,并在选择列表项时更新主界面上的文本标签内容。文章展示了如何创建自定义的数据模型以支持大量基于字符组合的列表项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.robert; import javax.swing.*; import java.awt.*; /** * Created by IntelliJ IDEA. * User: Administrator * Date: 11-11-12 * Time: 下午8:53 * To change this template use File | Settings | File Templates. */ public class LongListTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new LongListTestFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } package com.robert; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.xml.soap.Text; import java.awt.*; /** * Created by IntelliJ IDEA. * User: Administrator * Date: 11-11-12 * Time: 下午8:55 * To change this template use File | Settings | File Templates. */ public class LongListTestFrame extends JFrame{ private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 300; private JList wordList; private JLabel label; private String prefix = "The quick brown "; private String suffix = " jump over the lazy dog."; public LongListTestFrame() { setTitle("LongListTest"); setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); wordList = new JList(new WordListModel(3)); wordList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); wordList.setPrototypeCellValue("www"); JScrollPane scrollPane = new JScrollPane(wordList); JPanel p = new JPanel(); p.add(scrollPane); wordList.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { StringBuilder word = (StringBuilder)wordList.getSelectedValue(); setSubject(word.toString()); } }); Container contentPane = getContentPane(); contentPane.add(p,BorderLayout.NORTH); label = new JLabel(prefix + suffix); contentPane.add(label, BorderLayout.CENTER); setSubject("FOX"); } public void setSubject(String word) { StringBuilder text = new StringBuilder(prefix); text.append(word); text.append(suffix); label.setText(text.toString()); } } package com.robert; import com.sun.org.apache.bcel.internal.generic.LASTORE; import javax.swing.*; /** * Created by IntelliJ IDEA. * User: Administrator * Date: 11-11-12 * Time: 下午9:03 * To change this template use File | Settings | File Templates. */ public class WordListModel extends AbstractListModel { private int length; public static final char FIRST = 'a'; public static final char LAST = 'z'; public WordListModel(int n) { length = n; } public int getSize() { return (int)Math.pow(LAST - FIRST + 1,length); } public Object getElementAt(int n) { StringBuilder r = new StringBuilder(); for(int i = 0; i < length; i++) { char c = (char)(FIRST + n % (LAST - FIRST + 1)); r.insert(0, c); n = n / (LAST - FIRST + 1); } return r; } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值