2014-01-30 2 views
1

Я хочу, чтобы моя программа выполняла JFrame с текстовыми полями: имя, фамилия, состояние учетной записи и объем вывода, чтобы спросить пользователя об этой информации, а затем отобразить окно сообщения следующим образом: Привет, Джон Смит, после ухода, ваше текущее состояние учетной записи: (состояние после выхода). Я сделал это только так, как мог (сначала мне захотелось создать отдельный класс, где я бы разбирал состояние и сумму вывода, а затем делать вычисления, но у меня были проблемы с этим). Так что я сделал это в классе Card. Проблема в том, о чем я хочу спросить вас, что программа не только не делает эти вычисления, но и делает это 't компилировать вообще. Когда я удаляю код вычисления из своей программы, он компилируется, но очевидно, что в поле сообщения возвращается только «Hello firstName lastName».Предоставление результатов вычислений в JFrame MessageBox

public class Card extends JFrame { 

    private JTextField firstName; 
    private JTextField lastName; 
    private JTextField state; 
    private JTextField withdrawal; 
    private JButton accept; 


    public Card() { 
     super("Cash Machine"); 
     setLayout(new FlowLayout()); 

     firstName = new JTextField("First name"); 
     add(firstName); 

     lastName = new JTextField("Last name"); 
     add(lastName); 

     state = new JTextField("Current account state"); 
     add(state); 

     withdrawal = new JTextField("Amount of withdrawal"); 
     add(withdrawal); 

     accept = new JButton("Accept"); 
     add(accept); 


     newHandler handler = new newHandler(); 
     accept.addActionListener(handler); 

    } 
    String state1 = state.getText(); 
    int state2 = Integer.parseInt(state1); 
    String withdrawal1 = withdrawal.getText(); 
    int withdrawal2 = Integer.parseInt(withdrawal1); 
    int finalState = state2 - withdrawal2; 



    private class newHandler implements ActionListener { 

     ArrayList<String> first_names = new ArrayList<String>(); 
     ArrayList<String> last_names = new ArrayList<String>(); 
     public void actionPerformed(ActionEvent event) { 


      // SHOWING THE FINAL MESSAGE BOX 
      if(event.getSource()==accept) 

       JOptionPane.showMessageDialog(null, "Hello " + firstName.getText() + " " + lastName.getText() + " " + state.getText() + " .Your current account state is: " + finalState); 
      } 
      }  
     } 

ответ

2

Извините, мой плохой. Все ваши заявления в классе были присваиваниями, и поэтому технически разрешено их использование, но их местоположение еще дает свои проблемы.

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

Вместо этого выполните вычисления в обработчике , чтобы текстовые поля имели в них некоторые данные.

Что-то вроде этого:

// String state1 = state.getText(); 
// int state2 = Integer.parseInt(state1); 
// String withdrawal1 = withdrawal.getText(); 
// int withdrawal2 = Integer.parseInt(withdrawal1); 
// int finalState = state2 - withdrawal2; 


private class newHandler implements ActionListener { 
    ArrayList<String> first_names = new ArrayList<String>(); 
    ArrayList<String> last_names = new ArrayList<String>(); 

    public void actionPerformed(ActionEvent event) { 

    // SHOWING THE FINAL MESSAGE BOX 
    if (event.getSource() == accept) { 

     String state1 = state.getText(); 
     int state2 = Integer.parseInt(state1); 
     String withdrawal1 = withdrawal.getText(); 
     int withdrawal2 = Integer.parseInt(withdrawal1); 
     int finalState = state2 - withdrawal2; 

     JOptionPane.showMessageDialog(null, "Hello " + firstName.getText() 
       + " " + lastName.getText() + " " + state.getText() 
       + " .Your current account state is: " + finalState); 
    } 
    } 
} 
Смежные вопросы