2016-06-22 32 views
0

我有这样一个问题,我需要从JTextField中取出一个文本,并通过按下键盘上的Enter将其添加到JList中,并且可以通过在列表中单击alt-click名单。从JTextField中取出并添加到JList

我现在

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

     }  
} 

什么它只显示空架。

我将不胜感激任何形式的帮助。

+0

尝试调用行'jText.setText( “”)后'重绘()'的'inputPanel'中的keyPressed内;' – Orin

+0

你有没有添加'inputPanel'到JFrame?我没有看到'add(inputPanel)'这一行' – johmsp

+0

请尝试写一个[mcve]而不是发布完整的代码。 –

回答

0

这种方式有效。

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

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