Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListSelectionListener不使用弹出JFrame窗口_Java_Swing_User Interface_Jframe_Listselectionlistener - Fatal编程技术网

Java ListSelectionListener不使用弹出JFrame窗口

Java ListSelectionListener不使用弹出JFrame窗口,java,swing,user-interface,jframe,listselectionlistener,Java,Swing,User Interface,Jframe,Listselectionlistener,我在让JList正确使用ListSelectionListener时遇到问题,我;我尝试了一个匿名内部类,并将其添加到我的处理程序类中并实现了它,但两者都不起作用 现在的情况是,我有一个带有JComboBox的JFrame窗口,当你点击“颜色列表”时,会弹出一个新的JFrame窗口,上面有一个JList,选项应该会改变背景色……一切都很好,只是当我点击选项时背景色不会改变。我会发布相应的代码 private static String[] colorNames = {"Black", "Blue

我在让JList正确使用ListSelectionListener时遇到问题,我;我尝试了一个匿名内部类,并将其添加到我的处理程序类中并实现了它,但两者都不起作用

现在的情况是,我有一个带有JComboBox的JFrame窗口,当你点击“颜色列表”时,会弹出一个新的JFrame窗口,上面有一个JList,选项应该会改变背景色……一切都很好,只是当我点击选项时背景色不会改变。我会发布相应的代码

private static String[] colorNames = {"Black", "Blue", "Red", "White"};
private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED, Color.WHITE};

public void colorListOption() {
    TheHandler handler = new TheHandler();

    newFrame2 = new JFrame();

    panel3 = new JPanel();
    newFrame2.setTitle("Welcome to The Color List!");
    newFrame2.setLayout(new FlowLayout());
    newFrame2.setSize(500, 300);
    newFrame2.setDefaultCloseOperation(newFrame2.EXIT_ON_CLOSE);    

    colorList = new JList(colorNames);
    colorList.setVisibleRowCount(4);
    colorList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    colorList.setOpaque(false);
    panel3.add(new JScrollPane(colorList));
    newFrame2.add(panel3);  

    colorList.addListSelectionListener(
        new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent ls) {
                panel3.setBackground(colors[colorList.getSelectedIndex()]);
            }
        }
    );

    newFrame2.setVisible(true);
}

你确定这是因为监听器没有启动,背景颜色没有改变吗?也就是说,试着在侦听器中放入一个print语句,看看是否打印。好的,我会让你知道。好的,是的,你说得对。侦听器没有问题,只是背景颜色没有变化……有什么提示吗?我想在重新绘制组件之前,背景颜色不会更新。您可以在设置背景后立即执行getContentPane().repaint()。不,这也不起作用…您确定这是侦听器未启动的问题,也不是背景颜色未更改的问题吗?也就是说,试着在侦听器中放入一个print语句,看看是否打印。好的,我会让你知道。好的,是的,你说得对。侦听器没有问题,只是背景颜色没有变化……有什么提示吗?我想在重新绘制组件之前,背景颜色不会更新。您可以在设置背景后立即执行getContentPane().repaint()。不,这也不起作用。。。