繁体   English   中英

从JTextField中获取并添加到JList

[英]Take from JTextField and add to JList

我遇到了一个问题,我需要从JTextField中获取文本并将其添加到JList中,方法是在键盘上按Enter键,并且可以通过按住Alt键并单击列表从列表中删除选定的项目。

我现在有什么

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

        }       
}

它仅显示空白框。

我将不胜感激。

您从未将任何组件添加到JFrame。 这就是为什么它是空的。

这样工作。

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

暂无
暂无

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

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