如何在java中保存DefaultListModel中的数据
我正在尝试使用JList/DefaultListModel创建一个列表,该列表本身包含数据 这是我的问题如何在java中保存DefaultListModel中的数据,java,swing,jlist,defaultlistmodel,Java,Swing,Jlist,Defaultlistmodel,我正在尝试使用JList/DefaultListModel创建一个列表,该列表本身包含数据 这是我的问题 DefaultListModel my_docs = new DefaultListModel(); JList my_jlist = new JList(my_docs); // From here, I add elements to my_docs.. my_docs.addElement("Document 1"); my_docs.addElement("Document 2");
DefaultListModel my_docs = new DefaultListModel();
JList my_jlist = new JList(my_docs);
// From here, I add elements to my_docs..
my_docs.addElement("Document 1");
my_docs.addElement("Document 2");
my_docs.addElement("Document 3");
我该怎么做才能将每个文档的文本(平均约4000字节)保存在元素中,在单击之前不分配给另一个变量
例如,如果我单击列表中的文档2,该文档的文本将被分配给一个变量。如果我点击列表中的文档1,它也会做同样的事情
很抱歉问这个问题,信息太少,我不知道从哪里开始。您可以为文档创建包装。例如,包装器可以公开数据和名称。如果需要,还可以按需加载数据。将包装器的实例添加到列表中。使用文档名呈现列表中的每个条目。选择列表中的条目后,使用所选项目进行处理。下面是一个显示文档列表的简单示例。选择文档后,其内容将显示在文本区域中
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.*;
import javax.swing.event.*;
public class TestListModel {
public TestListModel() {
DefaultListModel model = new DefaultListModel();
model.addElement(new DocumentWrapper("Doc 1", "Doc 1 data"));
model.addElement(new DocumentWrapper("Doc 2", "Doc 2 data"));
model.addElement(new DocumentWrapper("Doc 3", "Doc 3 data"));
final JList list = new JList();
final JTextArea output = new JTextArea(5, 40);
list.setModel(model);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(new DocumentWrapperRenderer());
list.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
DocumentWrapper docWrapper = (DocumentWrapper) list
.getSelectedValue();
if (docWrapper != null) {
output.setText(docWrapper.getData());
} else {
output.setText("");
}
}
}
});
JFrame frame = new JFrame("Document list");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(list));
frame.add(output, BorderLayout.SOUTH);
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
public class DocumentWrapper {
private String data;
private String name;
public DocumentWrapper(String name, String data) {
this.name = name;
this.data = data;
}
public String getData() {
return data;
}
public String getName() {
return name;
}
}
public static class DocumentWrapperRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean hasFocus) {
if (value instanceof DocumentWrapper) {
return super.getListCellRendererComponent(
list, ((DocumentWrapper) value).getName(), index,
isSelected, hasFocus);
}
return super.getListCellRendererComponent(list, value, index,
isSelected, hasFocus);
}
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestListModel();
}
});
}
}