2016-11-08 6 views
1

Нам нужно написать прикладную программу графического пользовательского интерфейса Java (GUI) для выполнения целочисленной арифметики, получив от пользователя выражение, которое должно быть рассчитано. Мой код может компилироваться, но я не знаю, почему, когда он запускается, он немедленно отключается.Приложение GUI показывает, что немедленно завершает работу

Это мой CalculationGenerator.java:

//using GUI to calculate 
public class CalculationGenerator{ 
     public static void main(String[]args) 
     { 
     Calculator calculator = new Calculator(); 
     } 
    } 

Это мой Calculator.java:

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.JPanel; 
import javax.swing.JTextField; 

public class Calculator extends JFrame 
{ 
    private static final int FRAME_WIDTH = 400; 
    private static final int FRAME_HEIGHT = 300; 

    private JLabel Label; 
    private JTextField FIELD; 
    private JButton button; 
    private int result; 

    public Calculator() 
    { 
     result = 0; 
     Label = new JLabel("The result is:" + result); 

     createTextField(); 
     createButton(); 
     createPanel(); 

     setSize(FRAME_WIDTH, FRAME_HEIGHT); 
    } 
    //create text field 
    private void createTextField() 
    { 
     Label = new JLabel("what do you want to calculate?"); 

     final int FIELD_WIDTH = 10; 
     FIELD = new JTextField(FIELD_WIDTH); 
     FIELD.setText(""); 
    } 

    class GetResultListener implements ActionListener 
    { 
     public void actionPerformed(ActionEvent event) 
     { 
     try 
     { 
     Calculation(); 
     Label.setText("The result is:" + result); 
     } 
     catch(NumberFormatException exception) 
     { 
     System.out.println("not an integer"); 
     } 
     } 
    } 
    //calculate 
    public void Calculation() 
    { 
    String s = FIELD.getText(); 
    String[]parts = s.split(" "); 
    int x = Integer.parseInt(parts[0]); 
    int y = Integer.parseInt(parts[2]); 
    String operator = parts[1]; 

    switch(operator) 
    { 
    case"+": 
     result = x + y; 
     break; 
    case"-": 
     result = x - y; 
     break; 
    case"*": 
     result = x * y; 
     break; 
    case"/": 
     result = x/y; 
     break; 
    case"%": 
     result = x % y; 
     break; 
    case"^": 
     result = x^y; 
     break; 

    } 
    } 
    private void createButton() 
    { 
    button = new JButton("get result"); 

    ActionListener listener = new GetResultListener(); 
    button.addActionListener(listener); 

    } 

    private void createPanel() 
    { 
     JPanel panel = new JPanel(); 
     panel.add(Label); 
     panel.add(FIELD); 
     panel.add(button); 
     panel.add(Label); 
     add(panel); 
    } 
} 
+0

Вы не видите JFrame. 'calculator.setVisible (true);' должно быть после инициализации 'calculator. –

+0

спасибо! Оно работает! – Lenox

+0

@Matthew: Не могли бы вы сформировать свой комментарий в ответ? В противном случае этот вопрос будет отображаться как «неотвеченный» ... – Igor

ответ

2

Вы должны установить ваш JFrame, как видно после инициализации calculator.

public class CalculationGenerator{ 
    public static void main(String[]args) { 
     Calculator calculator = new Calculator(); 
     calculator.setVisible(true); 
    } 
} 
+2

Пожалуйста, примите [решение] (http://meta.stackexchange.com/a/5235/155831), если это помогло решить проблему. –

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