Problème sur la personnalistion des boutons sous ecclipse

Résolu
cybrid27 Messages postés 14 Date d'inscription samedi 2 octobre 2010 Statut Membre Dernière intervention 22 février 2011 - 23 oct. 2010 à 20:44
cybrid27 Messages postés 14 Date d'inscription samedi 2 octobre 2010 Statut Membre Dernière intervention 22 février 2011 - 24 oct. 2010 à 13:26
Bonjour à tous,

Je suis entrain de développer un jeu de question-réponse en java (sous ecclipse 3.5) et j'ai un soucis pour la création de mes boutons personnalisés. Voici le code de ma fenêtre d'acceuil :



[i]class Acceuil extends JFrame
{
private static final long serialVersionUID = 1L;

public Acceuil(String nom ,int posX,int posY,int larg,int haut)

{
super(nom);
setBounds(posX, posY, larg, haut);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(new panneauAcceuil());
setResizable(false);
setVisible(true);

}



class panneauAcceuil extends JPanel
{

private static final long serialVersionUID = 1L;

private JLabel L = new JLabel("Nouveau jeu");
private JButton b1 = new JButton("",new ImageIcon("jouer.jpg"));
private JButton b2 = new JButton("",new ImageIcon("aide.GIF"));


public panneauAcceuil()
{
L.setBounds(100,10,200,20);
b1.setBounds(100,100,200,100);
b2.setBounds(100,200,200,100);
add(L);
add(b1);
add(b2);
}

}

}/i


En fait, ma fenêtre s'ouvre mais :

-Les boutons et le libellé ne sont pas du tout placés (ils sont mis les uns à la suite des autres en haut).

-Les images des Boutons ont une taille ridicule(à peine visible) alors qu'à l'origine, elles ont une taille de 200 par 100.

-Les images ne recouvrent pas les Boutons.

Pourtant, eclipse ne me donne aucune erreur à la compilation.

Je ne comprends pas pourquoi il ne prend pas en compte les commandes alors qu'à priori, il les lit correctement.

Toute aide est la bienvenue !!





Un bon matheux est un glandeur, je suis donc un génie

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 oct. 2010 à 07:54
Salut,

L'utilisation des layouts simplifie beaucoup le développement d'une interface graphique, ca permet de ne plus devoir réfléchir à positionner et dimensionner les contrôles selon la résolution de l'écran, la taille de la fenêtre, etc. Avec un layout, tu définit les règles de positionnement et de taille, et java fait le reste.

Cela est très pratique dans la majorité des projets, mais pour des cas particuliers (utilisation d'images pour les contrôles par exemple), il peut être plus pratique d'utiliser la bonne vieille méthode sans layout comme tu essayes de le faire. Mais à ce moment là, il faut bien penser à mettre un layout null dans tout les composants qui vont contenir des contrôles.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 oct. 2010 à 22:37
Salut,

Il ne s'agit ni d'un problème d'eclipse ni du langage java, mais de ta mauvaise compréhension de swing, et en particulier, du système de layout.

Chaque composant conteneur SWING a un layout par défaut : le FlowLayout qui consiste à organiser les composants les uns à côté des autres. C'est pas le layout le plus adaptés pour toutes les situations, mais il a l'avantage d'être le plus simple à utiliser.
Ce sont les layouts qui définissent la taille et la position des composants pour éviter justement d'avoir le genre de code que tu as mis où tu fixe toi même la position et la taille des composants ce qui rend les gui statiques, difficiles à programmer, à maintenir et à faire évoluer !

Si ton but est vraiment que tes composants soit à une position fixe, à une taille fixe, et empêcher la fenêtre d'être redimensionnée (sinon ca va faire moche), libre à toi alors de faire ce que tu veux en te passant du système de layout :

public panneauAcceuil()
{
this.setLayout(null);
L.setBounds(100,10,200,20);
b1.setBounds(100,100,200,100);
b2.setBounds(100,200,200,100);
add(L);
add(b1);
add(b2);
}

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cybrid27 Messages postés 14 Date d'inscription samedi 2 octobre 2010 Statut Membre Dernière intervention 22 février 2011
24 oct. 2010 à 00:06
Avant toute chose, merci de ta réponse.

Je tiens juste à dire que si j'ai éssayé d'utiliser ceci c'est parce que cela me paraisait plus simple. Ca ne fait qu'un an que je me suis mis au java (cours INSA oblige) et je ne connait qu'une infime partie de ses possibilités.

En fait, pour placer des objets dans une fenêtre, on m'a plutot appris à me servir des grilles de positionnement (GridBagLayout, GridBagconstaints, etc,....). Seulement ici, à cause des images que je veux mettre dans mes boutons, je pense que ca va me poser un certain nombre de soucis. C'est pourquoi j'ai voulu essayer autre chose.

Maintenant, si tu pense avoir une meilleure solution que ce que j'ai voulu faire, je t'écoute volontier et avec attention.



Un bon matheux est un glandeur, je suis donc un génie
0
cybrid27 Messages postés 14 Date d'inscription samedi 2 octobre 2010 Statut Membre Dernière intervention 22 février 2011
24 oct. 2010 à 13:26
Ok merci infiniment pour ton aide

Un bon matheux est un glandeur, je suis donc un génie
0
Rejoignez-nous