简体   繁体   中英

Take from JTextField and add to JList

I had such a problem that I need to take a text from JTextField and add it to the JList by pressing Enter on Keyboard and selected items can be removed from the list by alt-clicking on the list.

What I have by now

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

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


public class Main extends JFrame{
   /**
     * 
     */
    private static final long serialVersionUID = -4006813674691791252L;

    private DefaultListModel listM;
    private JList list;
    private JTextField jText;

  public static void main(String[] args) {
      new Main();
  }

  Main() {

      super("From JText to Jlist");
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setLayout(new BorderLayout());
      pack();
      setLocationRelativeTo(null);
      setVisible(true);

      listM = new DefaultListModel();
      list = new JList(listM);
      jText = new JTextField();

      list.addMouseListener( new MouseAdapter() {

          @Override
          public void mouseClicked(MouseEvent e) {

            if (e.isAltDown() && list.getSelectedIndex() >= 0){
                        listM.remove(list.getSelectedIndex());
                    }
                }
         });

      jText.addKeyListener( new KeyAdapter() {

                        @Override
                        public void keyPressed(KeyEvent e){
                            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                                final String str = jText.getText();
                                listM.addElement(str);
                                jText.setText("");
                                    }
                        }
        });


        JPanel inputPanel = new JPanel();
        inputPanel.setLayout(new BorderLayout());
        inputPanel.add(new JScrollPane(list));
        inputPanel.add(jText, BorderLayout.PAGE_END);

        }       
}

It shows only empty frame.

I will be grateful for any kind of help.

You never added any of your components to the JFrame. That is why it is empty.

This way it works.

 JPanel inputPanel = new JPanel();
 inputPanel.setLayout(new BorderLayout());
 inputPanel.add(new JScrollPane(list));
 inputPanel.add(jText, BorderLayout.PAGE_END);
 getContentPane().add(inputPanel);

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