2016-11-08 3 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);'は電卓を初期化した後でなければなりません。 –

+0

ありがとうございます!できます! – Lenox

+0

@Matthew:あなたのコメントを回答に記入してください。そうでなければ、この質問は「未回答」と表示されます... – Igor

答えて

2

あなたはcalculatorを初期化した後、目に見えるよう、あなたのJFrameを設定する必要があります。

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

問題を解決するのに役立つならば、[回答を受け入れてください](http://meta.stackexchange.com/a/5235/155831)してください。 –

関連する問題