2016-06-22 25 views
0

JTextFieldからテキストを取り出してJListに追加する必要があるという問題がありました。キーボードのEnterキーを押して選択したアイテムをAltキーを押しながらリストから削除できます。リスト。私はそれが唯一の空のフレームを示し、今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

'行の後keyPressed内部inputPanel'' jText.setText( "")上の '再描画を()'を呼び出すしてみてください; ' – Orin

+0

あなたはJFrameのに' inputPanel'を追加してください? '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に一度も追加していません。それが空である理由です。

関連する問題