GUI中的Java列表

时间:2014-02-07 21:09:36

标签: java list user-interface netbeans

我使用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,这必然意味着第一个代码段不起作用。任何人都可以帮忙解决这个问题的原因吗?

1 个答案:

答案 0 :(得分:2)

因为您在listInt方法中声明和修改局部变量jList1ValueChanged,当您退出该函数时,该方法超出范围。当然你想要更改一个对jButton2ActionPerformed也可见的实例变量(可能称为listInt)但只是在那些if语句中设置它的值,而不是声明一个局部变量一样的名字。你得到0因为这是int的默认初始化值(所以listInt)。