2013-10-17 2 views
1

세 개의 Jtextfield가있는 간단한 계산기를 만들려고합니다. 처음 두 개는 사용자 입력을 저장하고 세 번째 입력은 계산 결과를 표시합니다. 사용자 입력을 문자열로 변환하여 표시 할 수는 있지만 분명히 잘못된 것입니다. 도와주세요.문자열로 정의되지 않았기 때문에 내 setText() 메서드에서 내 actionListener에 오류가 발생했습니다.

public class LetsDoMath extends JFrame { 

    JLabel instruction1; 
    JLabel instruction2; 
    JLabel instruction3; 
    JTextField input1; 
    JTextField input2; 
    JTextField result; 
    JButton plus; 
    JButton minus; 
    JButton times; 
    JButton divides; 


    /** 
    * Constructor of LetsDoMath 
    * 
    */ 
    public LetsDoMath() { 
     setSize(350, 100); 
     setTitle("Some Math Functions"); 
     JPanel panel = new JPanel(); 
     add(panel); 

     instruction1 = new JLabel("First"); 
     panel.add(instruction1); 

     input1 = new JTextField(4); 
     panel.add(input1); 

     instruction2 = new JLabel("Second"); 
     panel.add(instruction2); 

     input2 = new JTextField(4); 
     panel.add(input2); 

     instruction3 = new JLabel("Result"); 
     panel.add(instruction3); 

     result = new JTextField(6); 
     panel.add(result); 
     result.setEditable(false); 

     plus = new JButton("+"); 
     plus.addActionListener(new ButtonListener()); 
     panel.add(plus); 

     minus = new JButton("-"); 
     minus.addActionListener(new ButtonListener()); 
     panel.add(minus); 

     times = new JButton("*"); 
     times.addActionListener(new ButtonListener()); 
     panel.add(times); 

     divides = new JButton("/"); 
     divides.addActionListener(new ButtonListener()); 
     panel.add(divides); 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
    } 


    public class ButtonListener implements ActionListener { 
     public void actionPerformed(ActionEvent event) { 
      String msg = event.getActionCommand(); 

      String x; 
      String y; 
      double z; 


      x = input1.getText(); 
      System.out.println("Reading " + x + " from the first text field"); 
      System.out.println("Converted value: "+ Double.parseDouble(x)); 

      y = input2.getText(); 
      System.out.println("Reading " + y + " from the first text field"); 
      System.out.println("Converted value: "+ Double.parseDouble(y)); 

      if(event.getSource()== plus) 
      { 
       z = Double.parseDouble(x) + Double.parseDouble(y); 
       System.out.println("Result equals: "+z); 
       result = Double.toString(z).setText(); 
       System.out.println("Ready for next input"); 
      } 
      else if(event.getSource() == minus) 
      { 
       z = Double.parseDouble(x) - Double.parseDouble(y); 
       System.out.println("Result equals: "+z); 
       result = Double.toString(z).setText(); 
       System.out.println("Ready for next input"); 
      } 
      else if(event.getSource() == times) 
      { 
       z = Double.parseDouble(x) * Double.parseDouble(y); 
       System.out.println("Result equals: "+z); 
       result = Double.toString(z).setText(); 
       System.out.println("Ready for next input"); 
      } 
      else if(event.getSource() == divides) 
      { 
       z = Double.parseDouble(x)/Double.parseDouble(y); 
       System.out.println("Result equals: "+z); 
       result = Double.toString(z).setText(); 
       System.out.println("Ready for next input"); 
      } 
     } 
    } 
+0

당신이 그 코드가 무엇을 기대합니까? 네,'String'은'setText()'메소드를 가지고 있지 않습니다. 당신은 아마도 적절한 텍스트 상자 나 레이블에'setText'를 호출하기를 원할 것입니다 ... –

+0

'result = Double.toString (z) .setText();'?? =) String에는'setText()'가 없습니다. –

+0

@JonSkeet 어디에도 선언 된 결과 변수가 표시되지 않습니다. -/ –

답변

1

당신은 단지

result.setText(Double.toString(z)); 

setText()JTextField의 방법은

result = Double.toString(z).setText();

에 변경해야하고 당신이 원하는 것을의 매개 변수를 : 여기 내 코드입니다 JTextField을 문자열로 설정하십시오. Double.toString(z)을 전달하면 JTextField에 저장된 텍스트를 Double z의 값으로 설정합니다. 당신은 몇 가지 추가 읽기를 찾고 있다면

여기 공식 documentation

1

result = Double.toString(z).setText(); 당신은 JLabel 텍스트를 설정하려고하는 문제

입니다입니다. 당신이 JLabel의 텍스트를 설정해야하는 경우 다음을 수행해야합니다

result.setText(Double.toString(z)); 

하고 문제가 해결된다. a는 main() 여기 당신은 간다 추가 :

enter image description here

관련 문제