简体   繁体   English

如何将来自 2 个不同 JTextField 的 2 个元素添加到一个 JList

[英]How to add 2 elements from 2 different JTextField to one JList

How can I add elements from different JTextFields to one List.如何将来自不同 JTextField 的元素添加到一个列表中。 I've tried to put the elements in Strings and add them to the list but thats not working.我试图将元素放在字符串中并将它们添加到列表中,但这不起作用。

You have to add the strings to the list model that backs up the JList .您必须将字符串添加到备份JList的列表模型中。 Here is short example code that appends the current JTextField 's value to the list whenever you hit ENTER in the text field:这是一个简短的示例代码,每当您在文本字段中按 ENTER 时,它都会将当前JTextField的值附加到列表中:

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.BorderLayout;

public final class Example extends JFrame {
   public Example() {
      setLayout(new BorderLayout());

      // Create a list model and populate it with two initial items.
      final DefaultListModel<String> model = new DefaultListModel<String>();
      model.addElement("Initial 1");
      model.addElement("Initial 2");

      // Create a JList (wrapped into a JScrollPane) from the model
      add(new JScrollPane(new JList<String>(model)), BorderLayout.CENTER);

      // Create a JTextField at the top of the frame.
      // Whenever you click ENTER in that field, the current string gets
      // appended to the list model and will thus show up in the JList.
      final JTextField field1 = new JTextField("Field 1");
      add(field1, BorderLayout.NORTH);
      field1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               System.out.println("Append " + field1.getText());
               model.addElement(field1.getText());
            }
         });

      // Create a JTextField at the bottom of the frame.
      // Whenever you click ENTER in that field, the current string gets
      // appended to the list model and will thus show up in the JList.
      final JTextField field2 = new JTextField("Field 2");
      add(field2, BorderLayout.SOUTH);
      field2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               System.out.println("Append " + field2.getText());
               model.addElement(field2.getText());
            }
         });
   }
   public static void main(String[] args) {
      final JFrame frame = new Example();
      frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) { System.exit(1); }
         });
      frame.pack();
      frame.setVisible(true);
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM