Метод добавления изображений в массив JLabel - PullRequest
0 голосов
/ 10 марта 2011

Я пытаюсь заставить метод bilde () добавлять изображения и в мой массив JLabel при нажатии кнопки nyOmgang, это был тяжелый день, и я застрял.

private JLabel[] kort = new JLabel[16];
private JLabel[] kortForside = new JLabel[16];
private JButton nyOmgang = new JButton("Del ut kortene");
private ImageIcon bakside = new ImageIcon("image/bgi14.gif");
private ImageIcon[] forside = new ImageIcon[8];
private HovedVinduet vindu;
private int[] index = new int[8];


public Hukommelse(HovedVinduet vindu){
    super(new GridBagLayout());

    this.vindu = vindu;

    setBackground(Color.GREEN);
    setPreferredSize(new Dimension(1280,720));

    GridBagConstraints c = new GridBagConstraints();
    c.fill = GridBagConstraints.RELATIVE;
    c.gridx = 5;
    c.gridy = GridBagConstraints.RELATIVE;

    nyOmgang.addActionListener(this);
    add(nyOmgang, c);
    Kortene();





    forside[0] = new ImageIcon("");
    forside[1] = new ImageIcon(""); 
    forside[2] = new ImageIcon("");
    forside[3] = new ImageIcon("");
    forside[4] = new ImageIcon("");
    forside[5] = new ImageIcon("");
    forside[6] = new ImageIcon("");
    forside[7] = new ImageIcon("");

}

public JLabel Kortene() {

    GridBagConstraints c = new GridBagConstraints();

    for (int i = 0; i< kort.length; i++){
        kort[i] = new JLabel();
        add(kort[i]);
        kort[i].addMouseListener(this);
    }
    return null;
}

public JLabel kortForside(){
    int tilfeldig;
    int tracker;
    tracker = 0;
    tilfeldig = (int)(Math.random()*8);
    while (tracker < kort.length ){
        if (index[tilfeldig]<2){
            kortForside[tracker] = new JLabel(forside[tilfeldig]);
            tracker++;
            index[tilfeldig]++;
        }
    }

    return null;
}

public void bilder(){

    for (int i = 0; i<kort.length; i++){
        kort[i] = new JLabel(bakside);
    }

}


@Override
public void mouseClicked(MouseEvent agr0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("Del ut kortene")){  
        bilder();

    }

}

Ответы [ 2 ]

1 голос
/ 10 марта 2011

В билде, Изменение:

 kort[i] = new JLabel(bakside);

до:

 kort[i].setIcon(bakside);

Таким образом обновляются фактические ярлыки на вашей панели. Прежде чем создавать новые ярлыки, а не изменять существующие.

Вам может необходимо вызвать перерисовку на контейнере с ярлыками.

1 голос
/ 10 марта 2011

Я вижу, что вы создаете некоторые метки с иконками, например так:

kortForside[tracker] = new JLabel(forside[tilfeldig]);

Однако в вашем коде нет нигде, чтобы вы добавляли эти метки в GUI.

В отличие от другого массиваярлыков, которые вы создаете без изображений:

for (int i = 0; i< kort.length; i++){
    kort[i] = new JLabel();
    add(kort[i]);
...