2011-03-29 4 views
-1
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
class math 
{ 
    JFrame jf; 
    JTextField jt; 
    JButton jb; 
    JButton jb1; 
    math() 
    { 
     jf=new JFrame("frame"); 
     jf.setSize(200,200); 
     jf.setVisible(true); 
     jt=new JTextField(50); 
     jf.setLayout(new FlowLayout()); 
     JButton jb=new JButton("30"); 
     JButton jb1=new JButton("sin"); 
     jb.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent ae) 
      { 
       jt.setText("30"); 
      } 
     }); 
     jb1.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent ae) 
      { 
       String s=jt.getText(); 
       double x=Double.parseDouble(s); 
       double s1=Math.sin(x); 
       jt.setText(s1); 
      } 
     }); 
     JButton jb2=new JButton("cos"); 
     jf.add(jt); 
     jf.add(jb); 
     jf.add(jb1); 
     jf.add(jb2); 
    } 
    public static void main(String args[]) 
    { 
     new math(); 
    } 
} 
//its giving error that double can't be applied to jt.setText 
+0

프로그램이 던지는 것을 전체 예외가 무엇에? –

+0

OP가 후속 질문을 올렸지 만 닫혔습니다 : http://stackoverflow.com/ (jt.setText (s1 + "");) 또는'jt.setText (String.valueOf (s1)); ' –

+0

OP를 사용하십시오. 질문/5476258/program-is-giving-wanted-desired-output – Pops

답변

2

javax.swing.text.JTextField.setText(java.lang.String)String을 허용합니다. 이를 작성하여 s1String 표현을 얻을 수 있습니다 : 틀림없이 지금

jt.setText(Double.toString(s1));

, 둘 필요가 없기 때문에

jt.setText(String.valueOf(s1));

또는

jt.setText(s1 + "");

이 더 나은 선택이다 y의 변화 ou refactor s1는 다른 유형이어야합니다.

필자는 개인적으로 빈 문자열과의 문자열 연결을 세 번째로 선택했는데, 이는 정교하지 못한 해킹입니다.

5

setText 메서드는 double이 아니라 String입니다.

double에서 문자열을 가져올 수 있습니다 (Double.toString(someDouble)).

1

오류가 별다른 설명이, 내가 생각 :

double s1=Math.sin(x); 
jt.setText(s1); 

여기를 제공하고 같은 방법은 인수 double를 원하지 않습니다 "()의 setText"; 그것은 String을 원한다. 그래서 문자열로 이중 변환하고, 그것을 작동합니다

double s1=Math.sin(x); 
jt.setText(String.valueOf(s1)); 
0

TextComponent 클래스의 setText 방법은 인수 유형 String이 될 것으로 기대가로 변환해야하는 통과하려고 그렇게 더블 String.

변경

jt.setText(s1); 

jt.setText(Double.toString(s1)); 
관련 문제