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