java,怎么给一个JList添加元素啊????
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java,怎么给一个JList添加元素啊????相关的知识,希望对你有一定的参考价值。
看Java API就知道了。比如可以这样:
String[] message="数据一","数据二","数据三";
JList jlist=new JList(message);
这样就OK,还有其他的方法,多看API追问
我就是这样创建一个JList列表的啊,但是JList没有add()方法,所以我不知道怎么动态添加和动态删除一个元素....亲,你指点一下吧.....
追答看到JList的API中Jlist的构造方法分别是:
JList()
JList(ListModel dataModel)
JList(Object[] listData)
JList(Vector listData)
看到这里,我第一理解直接用的是第三种。但是你说要动态,不得不联想起JTable的动态。JTable是用得最多的。那么这里也有添加Model。就是第二种。
那么直接查ListModel的应用就是了。动态方法如下
DefaultListModel dlm = new DefaultListModel();
dlm.addElement("内容");
......
JList jl = new JList();
jl.setModel(dlm);
//删除所有信息:
/*
dlm.clear();
jl.setModel(dlm);
*/
删除指定项:
/*
dlm.remove(int index);
jl.setModel(dlm);
*/
跟JTable的用法是一样的。
如果一定要用JList(Object[] listData)呢,怎么实现动态的删除和添加元素啊....
.
JList(Object[] listData)的用法上面就用到了啊。
String[] message="数据一","数据二","数据三";
JList jlist=new JList(message);
String[]数组也是Object[]对象啊。
你用DefaultListModel进行动态的添加元素我明白了,但是,用JList jlist=new JList(message);动态添加数组我不知道....???
追答既然它的构造方法里有JList(Object[] listData)。那么你说String[]是不是Object[]嘛?
既然参数是Object[]数组,那么就可以传String[]、int[]、Double[]、Float[]、Byte[]都可以。我上面用的String[]。只要是数值类型的数组都可以传啊。
JList(Vector listData)的话就是List/Map都可以传说的是数据类型的范型。比如List
、Map。。。。。。。
DefaultListModel<String> model = new DefaultListModel<>();
JList<String> list = new JList<>(model);
model.addElement("Hello"); 参考技术B 上面这些人发的代码都不行啊,又没报错又没效果,奇怪的很 参考技术C 百度一下吗
有没有办法获取 JList 中的所有元素?
【中文标题】有没有办法获取 JList 中的所有元素?【英文标题】:Is there a way to get all elements in a JList? 【发布时间】:2012-06-02 14:01:27 【问题描述】:我想知道是否有办法检索已添加到 JList 的所有元素的列表。例如,我希望 JList 从自定义单元格渲染器返回一个数组或字符串或 JLabels 列表。
【问题讨论】:
是的,有办法。大概有几个。检查文档。对于每种方法,以及How to use Lists。 docs.oracle.com/javase/tutorial/uiswing/components/list.html 【参考方案1】:您可以使用getModel 方法获取ListModel。然后使用getElementAt
和getSize
方法来构建数组或列表或任何你想要的。
【讨论】:
另外请注意,如果您使用的是DefaultListModel,您可以使用toArray() 方法获取所有元素的数组。【参考方案2】:当然可以。你getElementAt()
有一个循环。
例子:
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;
import javax.swing.WindowConstants;
public class Jlist
JFrame frame;
JList<String> list;
JButton button;
public Jlist()
init();
public void init()
frame = new JFrame("Sample");
frame.setSize(300, 300);
frame.setLayout(new BorderLayout(30, 30));
DefaultListModel<String> model = new DefaultListModel<>();
model.addElement("A");
model.addElement("B");
model.addElement("C");
model.addElement("D");
model.addElement("E");
list = new JList<>();
list.setModel(model);
JScrollPane pane = new JScrollPane(list);
pane.setViewportView(list);
button = new JButton("Get");
button.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent evt)
buttonActionPerformed();
);
frame.add(pane, BorderLayout.NORTH);
frame.add(button, BorderLayout.CENTER);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
public void buttonActionPerformed()
for(int i = 0; i< list.getModel().getSize();i++)
System.out.println(list.getModel().getElementAt(i));
public static void main(String[] args)
new Jlist();
【讨论】:
【参考方案3】:试试这个...
String[] myArray = new String[50];
for (int i = 0; i < jList1.getModel().getSize(); i++)
myArray[i] = String.valueOf(jList1.getModel().getElementAt(i));
【讨论】:
【参考方案4】:我还没有看到任何人使用最简洁的方式来做到这一点。假设您使用的是 Java 8+:
IntStream.range(0,listModel.size()).mapToObj(listModel::get).collect(Collectors.toList());
我个人更喜欢它而不是任何循环方法。
【讨论】:
【参考方案5】:我们还可以使用 Message 对话框从 JList (named) myL 中获取元素,因此您可以使用以下方法对 JButton 对象执行操作。
String item = myL.getSelectedValue();
if( item == null )
JOptionPane.showMessageDialog(null, "Not selected yet");
else
JOptionPane.showMessageDialog(null, item);
【讨论】:
以上是关于java,怎么给一个JList添加元素啊????的主要内容,如果未能解决你的问题,请参考以下文章