首先,我需要将用户给出的号码添加到名为numberlist的列表中。然后最后将其添加到名为 listCollection 的列表列表中。之后我需要显示 listCollection 的输出 例如,假设用户首先将数字 2,3,4 添加到列表中,然后单击添加列表集合,然后再次输入数字 5,6,7,8 并单击添加到列出集合。我想要显示的输出是
Collection1 : 2,3,4
Collection2 : 3,4,5
假设我想要 listCollection 的索引 0 中的 2,3,4 和 listCollection 的索引 1 中的 5,6,7 .
这是我的代码:
import java.awt.FlowLayout;
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.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JTextField;
/**
*
* @author sudip
*/
public class JavaApplication1 extends JFrame implements ActionListener {
private JTextField txtNotation;
private JButton btAddlist, btAddNumber, btOutput;
private List<List<Integer>> listCollection;
private History history;
public JavaApplication1() {
initComponents();
listCollection = new ArrayList<List<Integer>>();
}
public void initComponents() {
setSize(400, 500);
setLayout(new FlowLayout(3, 3, 3));
setDefaultCloseOperation(EXIT_ON_CLOSE);
txtNotation = new JTextField("2");
txtNotation.setColumns(20);
txtNotation.setSize(20, 40);
btAddNumber = new JButton("Add Number");
btAddlist = new JButton("Add List to Collection");
btOutput = new JButton("Get");
getContentPane().add(txtNotation);
getContentPane().add(btAddNumber);
getContentPane().add(btAddlist);
getContentPane().add(btOutput);
btAddlist.addActionListener(this);
btAddNumber.addActionListener(this);
btOutput.addActionListener(this);
}
public static void main(String[] args) {
new JavaApplication1().setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton source = (JButton) e.getSource();
List<Integer> numberlist = new ArrayList<>();
int a = Integer.parseInt(txtNotation.getText());
if (source.equals(btAddNumber)) {
System.out.println("Number was added to list");
numberlist.add(a);
} else if (source.equals(btOutput)) {
displayOutput();
} else if (source.equals(btAddlist)) {
System.out.println("Number of list was added to ListCollection");
numberlist.clear();
listCollection.add(numberlist);
}
}
public void displayOutput() {
for (int i = 0; i < listCollection.size(); i++) {
System.out.println("Collection: " + i+1);
for (int j = 0; j < listCollection.get(i).size(); j++) {
System.out.print(listCollection.get(i).get(j) + ", ");
}
}
}
}
最佳答案
您的问题在于您的actionPerformed
逻辑,您可以在其中重新实例化一个新的 numberList
每一次。当事件源为btAddList
时,您的列表将始终为空,因为它刚刚被重新创建。由 btAddNumber
添加的号码按钮永远不会被持久化,修改后numberList
在 actionPerfomed
范围之后丢失方法已退出。
正如评论中所说,您应该致力于将 GUI 与逻辑分开,这将有助于避免此类错误。
关于java - 将列表添加到另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851841/