Buon giorno ragazzi ho un problema talmente stupido ma allo stesso tempo importante per la buona riuscita del mio progetto universitario. Spiego la situazione e infine posterò il codice.

Allora il mio problema è il seguente,fermo restando che ho creato quasi tutti la grafica del progetto con WindowBuilder, il plugin di eclipse, che fino ad ora non mi ha dato nessuno problema.

Allora, ho creato un JPanel, dove all'interno ho impostato il layout GridBagConstraints, e ho inserito delle varie JLabel con icone all'interno delle celle create. Dopo di che mi sono accorto che la semplice JLabel offerta da java non mi basta per il mio scopo quindi ne creo uno io di sana pianta chiamata MyJLabel con le modifiche necessarie. Faccio la prova modificando una sola JLabel per provare se funziona ma inspiegabilmente, l'icona della MYJlabel si sposta dalla posizione originale. Di seguito un'immagine che chiarisce mille parole:

http://img442.imageshack.us/img442/1687/vtl5.jpg

come ben potete vedere la JLabel selezionata (quella con il contorno rosso) è quella creata con la MyJLabel, e come potete vedere l'oggetto è in quella posizione, mentre l'icona si trova erroneamente in alto a sinistra. Cosa c'è che non va?

qui il codice della MYJlabel:

codice:
package graphic;

import javax.swing.JLabel;

public class MyJLabel extends JLabel{
	/**
	 * 
	 */
	private static final long serialVersionUID = -1872587052032643152L;
	int positionGridX;
	int positionGridY;

	public MyJLabel(){
		super();

	}

	public void setX(int x){
		positionGridX = x;
	}

	public void setY( int y){
		positionGridY = y;
	}

	public int getX(){
		return positionGridX;
	}

	public int getY( ){
		return positionGridY;
	}
}
e qui il frammento di codice del JPanel dove utilizzo la mia JLabel:

codice:
private void initialize(Giocatore campo [][],final Campionato c) {
		this.setSize(700, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel = new JPanel();
		getContentPane().add(panel, BorderLayout.CENTER);
		panel.setLayout(new BorderLayout(0, 0));
		
		JPanel panelScelte = new JPanel();
		panel.add(panelScelte, BorderLayout.SOUTH);
		panelScelte.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		
		JButton btnStop = new JButton("Stop");
		btnStop.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				//ferma la partita
				c.setFerma(true);
			}
		});
		panelScelte.add(btnStop);
		
		JButton btnRilancia = new JButton("Rilancia");
		btnRilancia.setEnabled(false);
		panelScelte.add(btnRilancia);
		
		JButton btnTira = new JButton("Tira");
		panelScelte.add(btnTira);
		
		JButton btnPassaggio = new JButton("Passaggio");
		panelScelte.add(btnPassaggio);
		
		JButton btnContrasto = new JButton("Contrasto");
		panelScelte.add(btnContrasto);
		
		JButton btnSostituzioni = new JButton("Sostituzioni");
		panelScelte.add(btnSostituzioni);
		
		JSplitPane splitPane = new JSplitPane();
		panel.add(splitPane, BorderLayout.CENTER);
		
		JLabel visualizzainfopartita = new JLabel("");
		splitPane.setRightComponent(visualizzainfopartita);
		
		panel_1 = new JPanel();
		panel_1.setBackground(UIManager.getColor("OptionPane.questionDialog.border.background"));
		splitPane.setLeftComponent(panel_1);
		GridBagLayout gbl_panel_1 = new GridBagLayout();
		gbl_panel_1.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
		gbl_panel_1.rowHeights = new int[]{0, 0, 0, 0, 0, 0};
		gbl_panel_1.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		gbl_panel_1.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		panel_1.setLayout(gbl_panel_1);
		
		MyJLabel lblDifensore = new MyJLabel();
		lblDifensore.setIcon(new ImageIcon(FinestraPartita.class.getResource("/images/soccerSmall.png")));
		lblDifensore.setName("");
		lblDifensore.setEnabled(false);
		GridBagConstraints gbc_lblDifensore = new GridBagConstraints();
		gbc_lblDifensore.insets = new Insets(0, 0, 5, 5);
		gbc_lblDifensore.gridx = 1;
		gbc_lblDifensore.gridy = 1;
		panel_1.add(lblDifensore, gbc_lblDifensore);
		lblDifensore.setX(gbc_lblDifensore.gridx);
		lblDifensore.setY(gbc_lblDifensore.gridy);
cosa c'è che non và? grazie mille per la pazienza e buona giornata a tutti