Java JList和列表问题 [英] Java JList and list problems
问题描述
我将列表项添加到JList
I added list items to JList
numbersList.add("first example");
numbersList.add("second example");
numbersList.add("third example");
,当我向字段中添加新文本或数字时,它将被添加到列表中并显示在JList中.在这里,我的代码只是想让我按下按钮时,新元素出现在列表numberList
中的JList fullList
中,该列表已从文本字段numberTxtFld
中添加.
and when I add new text or number to field it would would be added into list and showed at JList. Here my code, I just want to make that when I push button new element appear at JList fullList
from list numberList
which has been added from textfield numberTxtFld
.
p.s我已经删除了一些不必要的代码.
p.s i have removed some unnecessary code.
package average;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
public class Surface extends JLabel{
private JTextField numberTxtFld;
private JLabel topLabel;
private JLabel sumLabel;
private JLabel avgLabel;
private JLabel maxLabel;
private JLabel minLabel;
private JLabel amountLabel;
private JLabel listLabel;
private JLabel resultLabel;
private JLabel sumAnswerFld;
private JLabel avgAnswerFld;
private JLabel maxAnswerFld;
private JLabel minAnswerFld;
private JLabel amountAnswerFld;
private JLabel fullListLabel;
private JList fullList;
final List<String> numbersList = new ArrayList<String>();
private JButton submitBtn;
private JButton closeBtn;
private JPanel panel;
private int arrayIndex = 0;// used for components adding into array
public Surface(){
panel = new JPanel();
panel.setBackground(Color.WHITE);
panel.setSize(300, 300);
panel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
topLabel = new JLabel("Enter your number and push submit");
gbc.gridwidth = 3;
gbc.gridx = 0; // column
gbc.gridy = 0; // row
panel.add(topLabel, gbc);
gbc.gridwidth = 1; // setting grid column with to default
fullListLabel = new JLabel("Full list");
gbc.gridx = 2;
gbc.gridy = 1;
panel.add(fullListLabel, gbc);
amountLabel = new JLabel("Amount");
gbc.gridx = 0;
gbc.gridy = 5;
panel.add(amountLabel, gbc);
amountAnswerFld = new JLabel("0");
gbc.gridx = 1;
gbc.gridy = 5;
panel.add(amountAnswerFld, gbc);
numberTxtFld = new JTextField();
numberTxtFld.setColumns(10);
gbc.gridx = 0;
gbc.gridy = 1;
panel.add(numberTxtFld, gbc);
submitBtn = new JButton("Submit");
gbc.gridx = 1;
gbc.gridy = 1;
submitBtn.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent event) {
String text = numberTxtFld.getText();
numbersList.add(text);
}
}
);
panel.add(submitBtn, gbc);
numbersList.add("first example");
numbersList.add("second example");
numbersList.add("third example");
fullList = new JList(numbersList.toArray());
fullList.setVisibleRowCount(6);
fullList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
gbc.gridheight = 6;
gbc.gridx = 2;
gbc.gridy = 2;
panel.add(new JScrollPane(fullList), gbc);
gbc.gridheight = 1; // setting grid column with to default
add(panel);
}
}
推荐答案
您将需要创建一个ListModel.由于您所做的非常简单,因此可以使用DefaultListModel.
You will need to create a ListModel. As what you are doing is very simple you can use the DefaultListModel.
您需要声明
private DefaultListModel defaultListModel;
并实例化
defaultListModel = new DefaultListModel();
然后将其附加到JLists构造函数中的JList
then attach it to your JList in the JLists constructor
fullList = new JList(defaultListModel);
然后,您可能需要将您的项目添加到defaultListModel中,可能是循环进行
you will then need to add your items to the defaultListModel, probably in a loop
for (Object o : numbersList) {
defaultListModel.addElement(o);
}
最后,在动作监听器中,您现在需要改为调用defaultListModel上的addElement方法
Finally in your action listener you now need to call the addElement method on the defaultListModel instead
String text = numberTxtFld.getText();
defaultListModel.add(text);
然后,您应该使所有功能正常工作,并为您处理所有更新事件.
Then you should get everything to work as you desire plus all the update events are handled for you.
这篇关于Java JList和列表问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!