简体   繁体   中英

How to add 2 elements from 2 different JTextField to one JList

How can I add elements from different JTextFields to one List. 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 . Here is short example code that appends the current JTextField 's value to the list whenever you hit ENTER in the text field:

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);
   }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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