2010-11-05 4 views
0

J'essaie de créer un jeu de société en Java mais je suis assez nouveau pour les interfaces graphiques. Le problème est que les panneaux colorés sont ajoutés à la disposition de la grille et que les images sont ainsi groupées côte à côte. Je voudrais que les images soient sur le dessus des autres panneaux de couleur afin qu'il ressemble à une planche avec des morceaux (les images), en haut. Le code suivant devrait créer quatre carrés de couleur avec quatre des mêmes images sur le dessus, au lieu de se terminer côte à côte.java gridlayout gui - trop de panneaux?

import java.awt.*; 
import javax.swing.*; 

@SuppressWarnings("serial") 
public class test extends JFrame { 

private static JPanel gridLayout = new JPanel(new GridLayout(2, 2)); 
    private static ImageIcon img = new 
ImageIcon(System.getProperty("user.dir") + "/images/an_image.png"); 
private static String[] boardTest = { 
     "i", "i", 
     "i", "i" }; 

public test() { 
    BorderLayout layout = new BorderLayout(); 
    setLayout(layout); 
    add(gridLayout); 
} 

private static JLabel getPieceObject(String strPieceName) { 
    JLabel images; 
    if (strPieceName.equals("i")) { 
     images = new JLabel(img); 
    } else { 
     images = new JLabel(); 
    } 
    return images; 
} 

private static void displayBoard() { 
    for (int i = 0; i < 4; i++) { 
     gridLayout.add(getPieceObject(boardTest[i]), BorderLayout.CENTER); 
     // this creates the color squares of the board// 
     JPanel panel = new JPanel(); //error 
      if (i % 2 == i/2 % 2) { 
       panel.setBackground(Color.RED); 
      } else { 
       panel.setBackground(Color.BLUE); 
      } 
      gridLayout.add(panel); 
     //////////////////////////////////////////////// 
      gridLayout.validate(); 
    } 
} 

public static void main(String[] args) { 
    displayBoard(); 
    test app = new test(); 
    app.setSize(200, 200); 
    app.setVisible(true); 
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

}

+0

Vous avez reçu une réponse à cette question lors de votre dernière publication sur ce sujet: http://stackoverflow.com/questions/4094318/java-gui-panel-help-please. Vous n'avez jamais pris la peine d'accepter la réponse (même si vous avez copié une partie du code de la suggestion). Je vous ai suggéré d'ajouter "l'étiquette" au "carré d'échecs", pas "l'échiquier". – camickr

+0

J'ai essayé de changer la couleur d'arrière-plan des étiquettes qui contiennent les images mais cela n'a pas fonctionné. Je pense que le problème peut être que j'utilise un tableau de chaînes pour représenter le boad et ses morceaux de sorte que chaque fois que je iterator à travers je crée une instance de la même étiquette, avec une image différente. –

+0

Je n'ai aucune idée de ce que l'arrière-plan a à voir avec quoi que ce soit. Tout ce que vous faites est de créer une icône. Ajoutez l'icône à un JLabel. Ajoutez ensuite l'étiquette au panneau coloré représentant le carré du tableau. Vous n'avez toujours pas accepté ma suggestion lors de votre dernière publication, même si vous utilisez le code que j'ai suggéré. Donc vous êtes seul. Je ne vais pas me répéter une troisième fois. – camickr

Répondre

1

Vous pouvez définir l'image comme arrière-plan du panneau, like so.

+0

J'ai essayé d'ajouter une image en arrière-plan, mais elle peint toujours sur le cadre du tableau. –

+0

Vous pouvez peut-être essayer de mettre le layoutmanager à zéro, cela vous donnera un contrôle complet sur où et comment les choses sont affichées. Ce lien: http: //www.java2s.com/Tutorial/Java/0240__Swing/ZOrder.htm vous donne un exemple d'un tel processus. Vous pouvez d'abord dessiner les panneaux d'arrière-plan, puis dessiner les images après cela. – npinti

+0

Je vais essayer ça plus tard. Je pense que le plus gros problème que j'ai est que vous ne pouvez pas étendre JFrame et JPanel en même temps, et je suis encore nouveau à la mise en page gui de Java. –