gpt4 book ai didi

Java Final 变量在执行时发生变化

转载 作者:行者123 更新时间:2023-12-01 18:59:28 24 4
gpt4 key购买 nike

我不知道原因。也许你可以帮助我

所以在这里编写代码创建一个带有 8 个 slider 的框架。

public class MyFrame extends JFrame {


ImagePanel imagePanel;
final int Minimum = 0;
final int Maximum = 10;
final int NumberOfSpheres = 8;
final int NumberOfScales = 10;
MyRandomAccessFile file;

final String[] s = {"Друзья и Окружение",
"Отношения", "Карьера и Бизнес",
"Финансы", "Духовность и Творчество",
"Личностный Рост", "Яркость Жизни", "Здоровье и Спорт"};

private final Color[] colors = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.BLUE, Color.PINK, Color.MAGENTA, Color.DARK_GRAY};

private final int[] array = {1, 0, 0, 0, 0, 0, 0, 0};

public MyFrame () {

setTitle("Wheel Of Life");

MySlider[] sliders = new MySlider[NumberOfSpheres];
JButton saveButton = new JButton("Save");
MyActionListener listener1 = new MyActionListener();
saveButton.addActionListener(listener1);

file = new MyRandomAccessFile();

//String s3 = "0 0 0 0 0 0 0 0";
//array = stringToIntArray(s3);
array[1] = 4;

JLabel[] labels = new JLabel[NumberOfSpheres];
imagePanel = new ImagePanel(colors, array);
System.out.println(array[1]);
JPanel mainPanel = new JPanel();
JPanel[] sliderPanels = new JPanel[NumberOfSpheres];
JPanel mainSliderPanel = new JPanel(new GridLayout(4, 2, 20, 20));
MyChangeListener listener = new MyChangeListener();

for (int i = 0; i < NumberOfSpheres; i++) {
sliders[i] = new MySlider(s[i]);
sliders[i].addChangeListener(listener);
labels[i] = new JLabel(s[i]);
labels[i].setForeground(colors[i]);
labels[i].setFont(new Font("Droid Sans", Font.BOLD, 20));
sliderPanels[i] = new JPanel();
sliders[i].setMinimum(Minimum);
sliders[i].setMaximum(Maximum);
System.out.print(array[i]);
sliders[i].setValue(4);
sliders[i].setMajorTickSpacing(1);
sliders[i].setMinorTickSpacing((int) 0.1);
sliders[i].setPaintLabels(true);
sliders[i].setPaintTicks(true);
sliderPanels[i].setLayout(new GridLayout(2, 1, 5, 5));
sliderPanels[i].add(sliders[i]);
sliderPanels[i].add(labels[i]);
mainSliderPanel.add(sliderPanels[i]);

}

mainPanel.setLayout(new BorderLayout());
mainPanel.add(imagePanel, BorderLayout.CENTER);
mainPanel.add(mainSliderPanel, BorderLayout.EAST);
mainPanel.add(saveButton, BorderLayout.SOUTH);

add(mainPanel);
}

输出是这样的

499999999

final变量如何在执行时改变它的值,到底是什么???变量的实际值取决于我在 sliders[i].setValue(4); 处写入的值;但我不知 Prop 体如何...

我尝试为此变量设置一个观察点...不起作用。一次它为零,下一次程序停止在这个 for 循环中的值是 9、4 或其他......

最佳答案

当您将引用声明为final时,您无法更改引用,但可以更改底层对象状态。

你无法改变

int[] array = somethingelse;

但是

array[1] = 5;

有效。

关于Java Final 变量在执行时发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806590/

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