2017-10-15 5 views
0

2つの値を取り、ユーザーが選択するボタンに応じて減算/加算/除算を行う簡単なGUIを作成しようとしています。私は自分のコードに慣れていますが、何らかの理由で自分のプログラムを実行すると、目に見えるフレームが得られませんし、エラーも出ません。Eclipseでアプリケーションを実行するときにJFrameが開かない

import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JButton; 
import java.awt.Font; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class Calc { 

private JFrame frame; 
private JTextField firstNumber; 
private JTextField secondNumber; 
private JTextField textField_2; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Calc window = new Calc(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the application. 
*/ 
public Calc() { 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 
    frame = new JFrame(); 
    frame.setTitle("Simple Calculator"); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    firstNumber = new JTextField(); 
    firstNumber.setBounds(28, 41, 156, 26); 
    frame.getContentPane().add(firstNumber); 
    firstNumber.setColumns(10); 

    secondNumber = new JTextField(); 
    secondNumber.setBounds(28, 145, 156, 26); 
    frame.getContentPane().add(secondNumber); 
    secondNumber.setColumns(10); 

    JLabel lblNewLabel = new JLabel("First Number"); 
    lblNewLabel.setBounds(28, 27, 110, 16); 
    frame.getContentPane().add(lblNewLabel); 

    JLabel lblNewLabel_1 = new JLabel("Second Number"); 
    lblNewLabel_1.setBounds(28, 131, 110, 16); 
    frame.getContentPane().add(lblNewLabel_1); 

    JLabel answerLabel = new JLabel("ANSWER:"); 
    answerLabel.setFont(new Font("Lucida Grande", Font.PLAIN, 20)); 
    answerLabel.setBounds(216, 46, 190, 16); 
    frame.getContentPane().add(answerLabel); 

    JButton plusButton = new JButton("Add"); 
    plusButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try{ 
       int number1 = Integer.parseInt(firstNumber.getText()); 
      } 
      catch (Exception exc){ 
       JOptionPane.showMessageDialog(frame,"Error: bad first number."); 
       return; 
      } 
      try{ 
       int number2 = Integer.parseInt(secondNumber.getText()); 
      } 
      catch (Exception exc){ 
       JOptionPane.showMessageDialog(frame,"Error: bad second number."); 
       return; 
      } 
      int number1 = 0, number2 = 0; 
      int answer = number1 + number2; 
      answerLabel.setText("The answer is: "+answer); 
     } 
    }); 
    plusButton.setToolTipText("Adds first from second number"); 
    plusButton.setBounds(28, 183, 117, 29); 
    frame.getContentPane().add(plusButton); 

    JButton subtractButton = new JButton("Subtract"); 
    subtractButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try{ 
       int number1 = Integer.parseInt(firstNumber.getText()); 
      } 
      catch (Exception exc){ 
       JOptionPane.showMessageDialog(frame,"Error: bad first number."); 
       return; 
      } 
      try{ 
       int number2 = Integer.parseInt(secondNumber.getText()); 
      } 
      catch (Exception exc){ 
       JOptionPane.showMessageDialog(frame,"Error: bad second number."); 
       return; 
      } 
      int number1 = 0, number2 = 0; 
      int answer = number1 - number2; 
      answerLabel.setText("The answer is: "+answer); 
     } 
    }); 
    subtractButton.setToolTipText("Subtracts first from second number"); 
    subtractButton.setBounds(157, 183, 117, 29); 
    frame.getContentPane().add(subtractButton); 

    JButton divideButton = new JButton("Divide"); 
    divideButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try{ 
       int number1 = Integer.parseInt(firstNumber.getText()); 
      } 
      catch (Exception exc){ 
       JOptionPane.showMessageDialog(frame,"Error: bad first number."); 
       return; 
      } 
      try{ 
       int number2 = Integer.parseInt(secondNumber.getText()); 
      } 
      catch (Exception exc){ 
       JOptionPane.showMessageDialog(frame,"Error: bad second number."); 
       return; 
      } 
      int number1 = 0, number2 = 0; 
      int answer = number1/number2; 
      answerLabel.setText("The answer is: "+answer); 
     } 
    }); 
    divideButton.setToolTipText("Divides first from second number"); 
    divideButton.setBounds(289, 183, 117, 29); 
    frame.getContentPane().add(divideButton); 

    textField_2 = new JTextField(); 
    textField_2.setBounds(216, 94, 130, 26); 
    frame.getContentPane().add(textField_2); 
    textField_2.setColumns(10); 
} 
} 
+0

1)Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 2)これはNetBeansでうまく動作します(明らかに疑いがあるように、IDE問題であるという点で興味深いのは***です)。 –

+0

BTW - この[計算例]も参照してください(http:// stackoverflow.com/a/7441804/418556)。 'ScriptEngine'を使ってテキストフィールドの式を評価します。 –

答えて

1

Ah!これは私が以前経験した問題です。このヒントはこの問題を解決しました。ここでそれを行う方法です。

作成したことを確認してください。または、[プロジェクト] - > [自動的にビルド]を有効にすることもできます。

上記のオプションを設定したら、作業領域をクリーニングしてみてください。プロジェクト - >インポートしたすべてのプロジェクトをきれいにして清掃します。

eclipseを再起動して、プログラムを起動できます。

ps:動作しない場合は、コンソールでEclipseの画像を送信してください。ログと実行コンフィギュレーションの画像が表示されます。

関連する問題