【发布时间】:2017-03-02 09:47:58
【问题描述】:
我设计了这个方法来显示一个带有滑块的窗口,我需要返回该值。您能告诉我如何检索 JSlider 值吗?目前我收到错误消息:“从内部类引用的局部变量必须是最终的或有效的最终”?
private static int displayFontPanel(JFrame w){
JFrame window = new JFrame("Font Settings");
window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
int fontSize = 14;
window.setSize(400, 200);
window.setLocationRelativeTo(w);
JSlider fntSize = new JSlider(8,40,20);
fntSize.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
fontSize = ((JSlider)evt.getSource()).getValue();
}
});
fntSize.setLabelTable( fntSize.createStandardLabels(8) );
fntSize.setPaintLabels(true);
panel.add(fntSize, BorderLayout.CENTER);
window.setContentPane(panel);
window.setVisible(true);
return fontSize;
}
【问题讨论】:
-
错误已经告诉你该怎么做。变量必须是 final 才能在内部类中访问
-
使它最终导致我另一个错误:无法为最终变量sliderValue sliderValue = ((JSlider)evt.getSource()).getValue(); 分配一个值;
标签: java class final anonymous-inner-class