2012-05-31 4 views
0

У меня возникли проблемы с добавлением actionlistener к моему JTextField. Мне нужно получить текст, введенный пользователем, в строку, чтобы я мог работать с ним.JTextField ActionListener в GridBagLayout

Может ли кто-нибудь сказать мне, что я делаю неправильно или как я должен это делать.

Вот код:

public void actionPerformed(ActionEvent e) 
     { 
      //Execute when button is pressed 
      JFrame frame = new JFrame("Value Bet"); 
      frame.setVisible(true); 
      frame.setSize(500,300); 
      GridBagLayout layout = new GridBagLayout(); 
      frame.setLayout(layout); 
      GridBagConstraints c = new GridBagConstraints(); 

      JLabel label; 
      JTextField tf; 

      if (shouldFill) { 
      //natural height, maximum width 
      c.fill = GridBagConstraints.HORIZONTAL; 
      } 
      if (shouldWeightX) { 
      c.weightx = 0.5; 
      } 

      ... 

      tf = new JTextField(); 
      c.fill = GridBagConstraints.HORIZONTAL; 
      c.gridx = 1; 
      c.gridy = 2; 
      frame.add(tf, c); 
      tf.addActionListener(new ActionListener(){ 
       public void actionPerformed(ActionEvent e) 
       { 
        String chance1 = tf.getText(); 
       } 
      }); 

... 

ответ

1

Почему вы используете ActionListener вместо KeyListener?

Вы должны использовать KeyListener или:

tf.getDocument().addDocumentListener(documentListener); 

DocumentListener

+0

Будет ли прослушиватель документов позволять мне также хранить пользовательский ввод в переменной? И как? –

1
public void actionPerformed(ActionEvent e) 
{ 
    // Look Ma, a one-liner! 
    String chance1 = JOptionPane.showInputDialog(someComponent, "Value Bet"); 
} 

option pane one-liner

Смотрите далее в перегруженных методов подправить внешний вид, для робастности добавить null чек, а также рассмотреть используя счетчик вместо текстового поля (BNI).

Смежные вопросы