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; }}