怎么在Jlist中显示已存在数组的内容
1个回答
展开全部
分析,
1. 可以使用直接在构造时给一个参数(数组或者Vector类型)
比如
1
2
String[] arr = {"张三","李四","王五"};
JList<String> list = new JList<String>(arr);
2. 使用一个DefaultListModel 可以动态的添加数据. ..
具体代码如下:(刚好昨天回答别人,写的一段代码. 可以做个示范)
全部菜品的JList中 ,单击菜品,可以出现在已选菜品中
Jlist1(全部菜品)就是用数组生成的Jlist
JList2(已选菜品)就是动态添加数据的JList
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class MenuFrame extends JFrame implements ListSelectionListener {
JTextField jtf;
JList<String> jlist1, jlist2;
static final String[] CP = { "青椒土豆丝", "西红柿炒鸡蛋", "麻辣小龙虾", "鱼香肉丝", "西湖醋鱼", "红汤老火锅", "可乐", "茉莉花茶" };
DefaultListModel<String> dlm;//用dlm给jlist2动态添加数据
public MenuFrame() {
JPanel jpCenter = new JPanel(new GridLayout(1, 2));
jlist1 = new JList<String>(CP);
jlist1.addListSelectionListener(this);
JScrollPane jsp1 = new JScrollPane(jlist1);//滚动面板
jsp1.setBorder(BorderFactory.createTitledBorder("全部菜品"));//带标题的边框
jpCenter.add(jsp1);
jlist2 = new JList<String>();
dlm = new DefaultListModel<String>();
jlist2.setModel(dlm);
JScrollPane jsp2 = new JScrollPane(jlist2);
jsp2.setBorder(BorderFactory.createTitledBorder("已选菜品"));
jpCenter.add(jsp2);
add(jpCenter);
jtf = new JTextField(5);
jtf.setEnabled(false);
jtf.setText("0道");
JLabel jl = new JLabel("你已经选中的菜单数量是:");
JPanel jpSouth = new JPanel();
jpSouth.add(jl);
jpSouth.add(jtf);
add(jpSouth, BorderLayout.SOUTH);
setTitle("点菜");
setSize(300, 200);//窗口大小
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MenuFrame();//启动窗口
}
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
dlm.addElement(jlist1.getSelectedValue());//给dlm添加元素,更新jlist2的数据
jtf.setText(dlm.size()+"道");
}
}
}
1. 可以使用直接在构造时给一个参数(数组或者Vector类型)
比如
1
2
String[] arr = {"张三","李四","王五"};
JList<String> list = new JList<String>(arr);
2. 使用一个DefaultListModel 可以动态的添加数据. ..
具体代码如下:(刚好昨天回答别人,写的一段代码. 可以做个示范)
全部菜品的JList中 ,单击菜品,可以出现在已选菜品中
Jlist1(全部菜品)就是用数组生成的Jlist
JList2(已选菜品)就是动态添加数据的JList
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class MenuFrame extends JFrame implements ListSelectionListener {
JTextField jtf;
JList<String> jlist1, jlist2;
static final String[] CP = { "青椒土豆丝", "西红柿炒鸡蛋", "麻辣小龙虾", "鱼香肉丝", "西湖醋鱼", "红汤老火锅", "可乐", "茉莉花茶" };
DefaultListModel<String> dlm;//用dlm给jlist2动态添加数据
public MenuFrame() {
JPanel jpCenter = new JPanel(new GridLayout(1, 2));
jlist1 = new JList<String>(CP);
jlist1.addListSelectionListener(this);
JScrollPane jsp1 = new JScrollPane(jlist1);//滚动面板
jsp1.setBorder(BorderFactory.createTitledBorder("全部菜品"));//带标题的边框
jpCenter.add(jsp1);
jlist2 = new JList<String>();
dlm = new DefaultListModel<String>();
jlist2.setModel(dlm);
JScrollPane jsp2 = new JScrollPane(jlist2);
jsp2.setBorder(BorderFactory.createTitledBorder("已选菜品"));
jpCenter.add(jsp2);
add(jpCenter);
jtf = new JTextField(5);
jtf.setEnabled(false);
jtf.setText("0道");
JLabel jl = new JLabel("你已经选中的菜单数量是:");
JPanel jpSouth = new JPanel();
jpSouth.add(jl);
jpSouth.add(jtf);
add(jpSouth, BorderLayout.SOUTH);
setTitle("点菜");
setSize(300, 200);//窗口大小
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MenuFrame();//启动窗口
}
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
dlm.addElement(jlist1.getSelectedValue());//给dlm添加元素,更新jlist2的数据
jtf.setText(dlm.size()+"道");
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询