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 :(得分:5)
setText
方法需要String
,而不是double
。
您可以通过致电double
来获取Double.toString(someDouble)
的字符串。
答案 1 :(得分:2)
javax.swing.text.JTextField.setText(java.lang.String)
接受String
。您可以通过以下方式获得String
s1
的{{1}}代表:
jt.setText(Double.toString(s1));
现在,可以说是
jt.setText(String.valueOf(s1));
或
jt.setText(s1 + "");
是更好的选择,因为如果您将s1
重构为其他类型,则两者都不需要更改。
就个人而言,我总是找到第三个选择,用空字符串连接字符串,这是一个不优雅的黑客。
答案 2 :(得分:1)
我认为错误是不言自明的:
double s1=Math.sin(x);
jt.setText(s1);
“setText()”方法不希望参数加倍,因为你在这里给它;它想要一个字符串。因此,将您的double转换为String,它将起作用:
double s1=Math.sin(x);
jt.setText(String.valueOf(s1));
答案 3 :(得分:0)
TextComponent
类的setText方法期望其参数为String
类型,因此您尝试传递给它的double需要转换为String。
更改
jt.setText(s1);
到
jt.setText(Double.toString(s1));