我使用Netbeans(使用GUI编辑器)向我的GUI添加了一个列表,并添加了三个值:红色,绿色和蓝色。 我想改变用户从列表中选择的图像的亮度,即如果用户在列表中选择绿色然后按下增加亮度按钮,则亮度将仅增加绿色图像。 我已按照此处的说明添加了列表选择事件:http://docs.oracle.com/javase/tutorial/uiswing/components/list.html
我的活动代码如下:
private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {
// TODO add your handling code here:
jList1.getSelectedIndex();
if (jList1.getSelectedIndex() == 0) {
int listInt = 1;
}
if (jList1.getSelectedIndex() == 1) {
int listInt = 2;
}
if (jList1.getSelectedIndex() == 2) {
int listInt = 3;
}
}
我的亮度按钮代码如下:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.out.println(listInt);
if (listInt == 1) {
increaseContrast(redImage);
update(redImage, redIcon, redLabel);
}
if (listInt == 2) {
increaseContrast(greenImage);
update(greenImage, greenIcon, greenLabel);
}
if (listInt == 3) {
increaseContrast(blueImage);
update(blueImage, blueIcon, blueLabel);
}
无论选择什么,总是会向终端打印0,这必然意味着第一个代码段不起作用。任何人都可以帮忙解决这个问题的原因吗?
答案 0 :(得分:2)
因为您在listInt
方法中声明和修改局部变量jList1ValueChanged
,当您退出该函数时,该方法超出范围。当然你想要更改一个对jButton2ActionPerformed
也可见的实例变量(可能称为listInt
)但只是在那些if
语句中设置它的值,而不是声明一个局部变量一样的名字。你得到0因为这是int的默认初始化值(所以listInt
)。