2015-12-02 3 views
0

Я новичок в java swing, к сожалению, когда я хочу настроить прослушиватель действий на одну из кнопок, чтобы он получил контент textArea и отправил его другому классу, он не работает так, ожидать, и вместо этого он работает, когда я изменяю содержимое текстовой области, я не знаю, что произошло?action listener не работает

первой кнопки я назвал кнопку и та же проблема возникла, когда я использую другое действие слушателя в действие слушателя в Баттона имени Clac

вот мой код:

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

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 

public class FFT_Main_Frame extends JFrame { 

    JLabel label; 
    JButton button; 
    TextPanel txtPanel; 
    JButton Button; 
    JLabel label1; 
    // JTextArea[] BoxArray; 
    makePolynomial mp; 
    JButton Calc; 
    Complex[] Nums; 
    Complex[] Result; 
    int input; 
    FFT_Main fft_main; 
    ShowResult shr; 

    public FFT_Main_Frame() { 

     Button.addActionListener(new ActionListener() { 
      // Test t; 

      // Integer content; 
      @Override 
      public void actionPerformed(ActionEvent arg0) { 

       try { 
        Integer content = new Integer(Integer.parseInt(txtPanel.getTextArea())); 
        input = content; 
        System.out.println(input); 
        // inputt=input; 
        mp = new makePolynomial(content); 
        setLayout(new FlowLayout()); 
        add(mp); 
        // setLayout(new BorderLayout()); 
        add(Calc); 

        Nums = new Complex[input + 1]; 
        Calc.addActionListener(new ActionListener() { 
         @Override 
         public void actionPerformed(ActionEvent arg0) { 
          for (int i = input; i >= 0; i--) { 
           Nums[i] = new Complex(Double.parseDouble(mp.BoxArray[2 * (i + 1) - 1].getText()), 
             Double.parseDouble(mp.BoxArray[2 * i].getText())); 
          } 

          for (int i = 0; i <= input; i++) { 
           System.out.println(Nums[i]); 
          } 
          fft_main = new FFT_Main(); 
          Result = new Complex[input]; 

          Result = fft_main.Recursive_FFT(Nums); 

          shr = new ShowResult(Result); 

          setLayout(new BorderLayout()); 
          add(shr, BorderLayout.CENTER); 

          System.out.println("Result\n\n"); 
          for (int i = 0; i <= input; i++) { 
           System.out.println(Result[i]); 
          } 

         } 
        }); 

       } catch (NumberFormatException exception) { 
        JOptionPane.showMessageDialog(null, "Please Enter Just Numbers! ", "Wrong Value", 
          JOptionPane.ERROR_MESSAGE); 

       } 
      } 
     }); 
    } 
} 

спасибо за вашу помощь

+2

Таким образом, вы пример, скорее всего, для создания 'NullPointerException' как' Button' никогда не initalised, но ваш попробовать и добавить 'ActionListener 'к нему. Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer

ответ

0

Вы используете неверный способ прослушивателя действий, например, как его использовать

public FFT_Main_Frame() { 

    JButton Button = new JButton("Button"); 
    Button.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent arg0) { 

     try { 

     // Code Here 

     }catch(Exception e) { 
      // Code Here 

     } 
    }); 

    JButton Calc = new JButton("Calc"); 
    Calc.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent arg0) { 

      // Code Here   

    } 
    }); 

    } 
} 

Некоторые учебники о том, как использовать действия слушателя

https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

http://www.tutorialspoint.com/swing/swing_action_listener.htm

+0

спасибо, за ваш комментарий, но на самом деле я написал код, как это раньше, но потому, что я хочу, чтобы входное значение я не мог ничего сделать, кроме как положить слушателя действия Calc внутри прослушивателя действий кнопки –

+0

вы можете получить вход таким образом, что вы хотите сделать, когда нажата кнопка? – RAP

+0

вы знаете, как я писал в сообщении, когда я нажал на кнопку, я хочу получить значение txtPanel public class TextPanel extends JPanel { \t частный JTextArea textArea; \t общественные TextPanel() { \t \t \t \t Textarea = новый JTextArea (1,3); \t \t \t \t setLayout (новый BorderLayout()); \t \t \t \t add (textArea, BorderLayout.CENTER); \t \t // добавить (новый JScrollPane (textArea), BorderLayout.CENTER); \t} \t \t Строка getTextArea() \t { \t \t возврата textArea.getText(); \t} } , но в коде, который я написал, когда я нажал на кнопку, он не работает, но когда я хочу очистить текстовую область actionlistener действует –

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