gpt4 book ai didi

java - 使用 Jpanel.getWidth() 计算不起作用

转载 作者:行者123 更新时间:2023-11-29 03:01:36 27 4
gpt4 key购买 nike

注意:我找不到适合这个问题的标题...

class MyPanel设置一个 JPanel上面有自定义绘图。为了使图纸适合JPanel的实际尺寸这是在另一个 class 中设置的, 我需要计算 JPanels 的比率宽度或高度和 int scale .我需要 ratio 的小数部分因为取决于它是 0.5,我想以不同的方式对待结果。

public class MyPanel extends JPanel {

public void setUp(int px, int py, int width, int height){
this.setBackground(Color.WHITE);
this.setBounds(px, py, width, height);
}

int scale = 35;

public int plusX(){
double ratio = this.getHeight()/scale;
long integer;
double fractional;
int plusX = 0;

integer = (long) ratio;
fractional = ratio - integer;
if (fractional > 0.5){
plusX = (int) (scale*fractional);
}
if (fractional < 0.5 ){
plusX = (int) (-scale*fractional);
}
System.out.println("ratio: "+ratio+ " integer: "+integer+" fractional: "+fractional+" plusX: "+plusX);
return plusX;
}
}

使用 width = 1254, height = 648 的输出和 scale = 35结果:

ratio: 18.0 integer: 18 fractional: 0.0 plusX: 0

但是 18 是错误的,导致 fractional = 0.0 .
scale*ratio应该导致 height (例如:35*18.51=648fractional = 0.51)。

无论我为比例选择哪个值,比例始终保持准确的 .0。

最佳答案

根据 documentation , getHeight() 给出一个 intscale 也是一个 int。在 Java 中,将 2 个整数相除得到一个 int,因此 ratio 变为 18

要解决此问题,请将 scale 声明为 double,因为 thag 会产生一个 float ,这正是您所追求的。

关于java - 使用 Jpanel.getWidth() 计算不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com