JPanel.setBounds(xx,xx,variable,xx)不起作用。为什么?

时间:2015-10-15 13:23:46

标签: java jpanel

public void colortemperatureJSliderStateChanged(ChangeEvent event) {
   fahrenheitdegree = colortemperatureJSlider.getValue(); 
   fahrenheitJPanel.setBounds(100,270, fahrenheitdegree, 20);

   celsiusdegree = (fahrenheitdegree - 32.0)*5.0/9.0;
   celsiusJPanel.setBounds(100,220,celsiusdegree, 20);
}// end of public void colortemperatureJSliderStateChanged..

我的教授希望两个变量(摄氏和华氏)都是双倍的 我为celsiusdegree设置了double的声明;和华氏度;

不知何故,编译在JPanel.setBounds(xxx,xxx,variable,xx)的两行上发现了两个错误;因为它是“不兼容的类型:从double到int的可能有损转换。”

当我尝试将变量更改为int时。错误是celsiusdegree的公式不会识别int。那么如何让它适用于双变量呢?

3 个答案:

答案 0 :(得分:1)

要使这个工作为double,你应该将变量保持为double并告诉编译器无论如何都要执行有损会话。

所以:

celsiusJPanel.setBounds(100, 220, (int) celsiusdegree, 20);

应该可以正常工作。

可以在Extracting Hyperlinks From Excel (.xlsx) with Python以及"Why can int/byte/short/long be converted to float/double without typecasting but vice-versa not possible"

中找到更多信息

答案 1 :(得分:0)

JPanel的setBounds将面板的右上角设置为第一个和第二个参数作为x,y坐标。第三个和第四个参数分别指定宽度和高度。您需要创建标签或文本字段以显示您的值。

答案 2 :(得分:0)

我建议将celsiusdegreefahrenheitdegree保留在Double中,然后将setBounds用作以下内容:

celsiusJPanel.setBounds(100, 220, celsiusdegree.intValue(), 20);

因为你不能 cast Double to int