JList со слушателем в одном классе, чтобы обновить ImageIcon в другом классе - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу иметь две панели в разделенной панели. На первой панели (ListPanel10_14) - JList, где я выбираю имя животного, которое я хочу отобразить на второй панели. Во второй панели (ImagePanel10_14) ImageIcon со всеми животными. Моя проблема в том, что я не могу связать JList Listener на моей первой панели для обновления / перерисовки изображений на второй панели. Я ожидаю, что я должен вызвать paintMethod, и я пробовал много кодов, но все они генерировали ошибки. Пожалуйста, помогите мне понять, как связать слушателя в одном классе, чтобы воздействовать на переменную второго класса и перекомпилировать второй класс

Спасибо

public class Jlist10_14 
{

    public static void main(String[] args) {
        JFrame frame = new JFrame ("Deux panels connectés entre eux");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ListPanel10_14 listP = new ListPanel10_14();
        ImagePanel10_14 imageP = new ImagePanel10_14();
        JSplitPane sp = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT, true, listP,imageP);

        frame.setContentPane(sp);
        frame.pack();
        frame.setVisible(true);
    }
}

public class ListPanel10_14 extends JPanel 
{

    String[] animaux = {"tigre", "girafe","singe","perruche"};
    JList listeAnimaux = new JList (animaux);
    int indexSelected ;

    public ListPanel10_14()
    {       
        listeAnimaux.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        ListListener listener = new ListListener();
        listeAnimaux.addListSelectionListener(listener);
        add(listeAnimaux);
    }

    // Inner Class
    private class ListListener implements ListSelectionListener
    {
        public void valueChanged(ListSelectionEvent event) 
        {
            indexSelected = ListPanel10_14.this.listeAnimaux.getSelectedIndex();
            System.out.println(indexSelected);          
        }   
    }   
}

public class ImagePanel10_14 extends JPanel{    

        int index ;

    ImageIcon tigreImage = new ImageIcon ("C:/Users/david/Desktop/java png/tigre.gif");

    ImageIcon girafeImage = new ImageIcon ("C:/Users/david/Desktop/java png/girage.gif");

    ImageIcon singeImage = new ImageIcon ("C:/Users/david/Desktop/java png/singe.gif");

    ImageIcon perrucheImage = new ImageIcon ("C:/Users/david/Desktop/java png/perruche.gif");

    ImageIcon[] images = {tigreImage, girafeImage, singeImage, perrucheImage};

    JLabel imageLabel = new JLabel();
    ListPanel10_14 inListPanel = new ListPanel10_14();

    public ImagePanel10_14()
    {
        setIndex();
        imageLabel.setIcon(images[index]);
        add(imageLabel);

    }

    public void setIndex() {
        index = inListPanel.indexSelected;
    }   
}
...