2011-03-10 34 views
0

我試圖讓bilde()方法也添加圖像我的JLabel數組,當nyOmgang按鈕被按下時,它是一個艱難的一天,我已經卡住了。將圖像添加到JLabel數組的方法

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(); 

    } 

} 

回答

1

在BILDER,更改:

kort[i] = new JLabel(bakside); 

到:

kort[i].setIcon(bakside); 

這樣實際的標籤,其是在你的面板上更新。在創建新標籤之前,不要更改現有標籤。

可能需要調用重新標記容器上的重繪。

+0

謝謝,你的提示工作 – Fadderman 2011-03-11 21:37:51

+0

@Fadderman很高興聽到。如果他們工作,不要忘記你可以接受答案;) – 2011-03-13 16:31:04

1

我看你帶圖標創建一些標籤,就像這樣:

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

但是,無處在你的代碼,你這些標籤添加到GUI。

與標註不同的其他陣列創建無圖像:

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

Jzd該數組用於mousepressed事件,因此當我在標籤上按下鼠標時,它們將更改爲其他標籤數組。 – Fadderman 2011-03-10 21:23:24