您好我正在尝试在Java中绘制对角线,这不会像它应该的那样工作..
“value”变量每次都在for循环中更新,但它获得下一个值
例如,如果我插入1我在我的控制台中使用system.out.println(value)得到它:
2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304
但是变量“value”必须包含我插入的值..我使用的代码你可以在下面找到
DrawLines line = new DrawLines();
int value = 0;
public void paintComponent(Graphics g) {
super.paintComponent(g);
int xPos = 0;
int yPos = getHeight() - (getHeight() / 2);
for(int aantalLines = 0; aantalLines < 10; aantalLines++ ) {
line.drawLines(g, xPos, yPos + value, getWidth(), getHeight() - value );
value += value;
System.out.println(value);
System.out.println(aantalLines);
}
}
public void actionPerformed(ActionEvent e) {
try {
value = Integer.parseInt(tussenRuimte.getText());
repaint();
}
catch(NumberFormatException err) {
JOptionPane.showMessageDialog(null, "Number Format Error: Vul alles goed in s.v.p");
}
}
问题是它不能像这样工作..有人可以解释我做错了什么以及如何解决这个问题?
答案 0 :(得分:2)
不要在paintComponent方法中更改value
的值。而是将其复制到paintComponent方法的另一个本地变量中,然后使用并更改那个变量。这样,每次调用paintComponent(...)
时,它都不会重新设置由值保持的int。
例如,
public void paintComponent(Graphics g) {
super.paintComponent(g);
int xPos = 0;
int yPos = getHeight() - (getHeight() / 2);
int localValue = value;
for(int aantalLines = 0; aantalLines < 10; aantalLines++ ) {
line.drawLines(g, xPos, yPos + localValue, getWidth(), getHeight() - localValue );
localValue += localValue;
// System.out.println(value);
// System.out.println(aantalLines);
}
}
答案 1 :(得分:1)
为什么在已有循环变量的情况下修改value
的值:
for(int aantalLines = 0; aantalLines < 10; aantalLines++ ) {
line.drawLines(g, xPos, yPos + ((aantalLines + 1) * value),
getWidth(), getHeight() - ((aantalLines + 1) * value) );
}
应该归结为@Hovercraft已经提出的建议。
如果这些解决方案都没有帮助,您可能在其他地方遇到问题。
注意:请勿改变paint
,paintComponent
,...方法中的状态。您无法控制调用次数和时间