2016-04-27 7 views
-1

comboboxtextboxを作成します。ユーザーはテキストボックスにテキストを入力し、テキストはcomboboxの項目として追加されます。テキストフィールドからコンボボックスにテキストを追加するにはどうすればよいですか?

どうすればいいですか?私はコードを書いたが、私はactionlistenerに書き込むものを見つけることができなかった。

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class Q2 extends JFrame { 

    JTextField t; 
    JComboBox combobox = new JComboBox(); 

    public Q2() { 
     t = new JTextField("Enter text here", 20); 
     t.setEditable(true); 
     t.addActionListener(new act()); 
     add(t); 
     add(combobox); 

     combobox.addItem(t.getText().toString()); 
     setLayout(new FlowLayout()); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(300, 300); 
     setLocationRelativeTo(null); 
     setVisible(true); 
    } 

    public class act implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 

     } 
    } 

    public static void main(String[] args) { 
     Q2 test = new Q2(); 
    } 
} 
+0

jcomboboxにデータを書き込むためにテキストフィールドが必要な理由は、単にコンボを編集可能にすることができます。言ってるだけ。 – Priyamal

+0

私はjavaで新しいですし、私はすべてのコードを学びたいと思います:)また、私は編集可能なコンボボックスを知らない。 –

+0

k。 – Priyamal

答えて

0

私はボタンを追加し、ボタンをJComboBoxに追加することで機能を置きます。ここでは例です:

あなたは真のコンボボックスで編集可能なプロパティを設定する必要が
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class Q2 extends JFrame { 

    JTextField t; 
    JComboBox combobox; 
    JButton b; 

    public Q2() { 
     combobox = new JComboBox(); 
     t = new JTextField("Enter text here", 20); 
     t.setEditable(true); 
     b = new JButton("Add"); 
     b.addActionListener(new act()); //Add ActionListener to button instead. 
     add(t); 
     add(combobox); 
     add(b); 

     //combobox.addItem(t.getText().toString()); //Moved to ActionListener. 
     setLayout(new FlowLayout()); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(300, 300); 
     setLocationRelativeTo(null); 
     setVisible(true); 
    } 

    public class act implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      combobox.addItem(t.getText()); //Removed .toString() because it returns a string. 
     } 
    } 

    public static void main(String[] args) { 
     Q2 test = new Q2(); 
    } 
} 
+0

ありがとう:)これは私がしたいものよりも良いです:) –

0
private JTextComponent comboboxEditor; 

Vector ComboData = new Vector(); 

public void addActionListners() { 

     //adding action listner to the NameComboBox 
     this.comboboxEditor = (JTextComponent) yourCombo.getEditor().getEditorComponent(); 
     comboboxEditor.addKeyListener(new KeyAdapter() { 

      public void keyReleased(KeyEvent evt) { 
       int i = evt.getKeyCode(); 
       if (i == 10) { 
        //combobox action on enter 
        ComboData.add(comboboxEditor.getText()); 
        yourCombo.setListData(ComboData); 
       } 

      } 
     }); 
} 

それ以外のコンボボックスの上に書くことができる習慣。起動(コンストラクター)でaddActionListners()メソッド を呼び出すようにしてください。私は、コンボボックスのエディタをjtextComponentに変更することによって、コンボボックスにjtextフィールドの機能性を与えています。この例を試してみてください

+0

ありがとうございます:) –

関連する問題