ekin0xX
Messages postés2Date d'inscriptionlundi 21 mars 2011StatutMembreDernière intervention25 avril 2012
-
24 avril 2012 à 23:34
Utilisateur anonyme -
12 juin 2012 à 13:50
Bonjour à tous,
Après avoir chercher un peu partout et n'ayant toujours pas réussi à résoudre mon problème je m'oriente vers vous.
Dans mon cas, j'ai une frame qui est composé d'un Jpanel avec des boutons et un autre Jpanel à l'intérieur qui est le contenu modifiable par l'action des boutons.
En gros voici la hiérarchie de l'interface :
Jframe > JPanel1 >> JButton + JPanel2
J'aimerai pouvoir actualiser le contenu de mon Jpanel2 en appelant une classe qui étend Jpanel et où j'ai déjà défini les boutons etc.
Dans un premier temps j'ai essayé le code ci-dessous pour supprimer le contenu de mon JPanel2 :
cs_boujrad
Messages postés1Date d'inscriptionmardi 27 mars 2012StatutMembreDernière intervention 3 mai 2012 3 mai 2012 à 13:39
bonjour,
bonjour,
j'ai un petit souci concernant le sleep pour les boutons, en fait quand je clique sur mon premier bouton j(arrive a voir l'image mais quand je clique sur le 2eme je n'arrive pas a la voir.
voila le code que j'ai utilisé.
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;
import static java.util.Collections.*;
import java.awt.GridLayout;
public class Memoire extends JFrame implements ActionListener {
private JPanel pan = new JPanel();
private JButton[] safae = new JButton[16];
private ImageIcon[] safaee= new ImageIcon[16];
public ArrayList listeImage = new ArrayList();
private int counter = 0;
private int[] btnID = new int[2]; //0
private int pairesTrouvee = 0;
ImageIcon i0 = new ImageIcon("1.png");
ImageIcon i1= new ImageIcon("2.jpeg");
ImageIcon i2= new ImageIcon("3.jpeg");
ImageIcon i3= new ImageIcon("4.jpeg");
ImageIcon i4= new ImageIcon("5.jpeg");
ImageIcon i5= new ImageIcon("6.jpeg");
ImageIcon i6= new ImageIcon("7.jpeg");
ImageIcon i7= new ImageIcon("8.jpeg");
ImageIcon i8= new ImageIcon("9.jpeg");
ImageIcon i9=i1;
ImageIcon i10=i2;
ImageIcon i11=i3;
ImageIcon i12=i4;
ImageIcon i13=i5;
ImageIcon i14=i6;
ImageIcon i15= i7;
ImageIcon i16= i8;
public Memoire(){
init();
panel();
//setArrayListText();
setArrayImageIcon();
this.setTitle("Jeux de Memoire");
this.setSize(400, 500);
//this.setResizable(false);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(pan);
}
public void init() {
for (int i = 0; i < safae.length; i++) {
//safae[i]=new JButton(safaee[i]);
safae[i] = new JButton();
safae[i].setFont(new Font("Serif", Font.BOLD, 28));
safae[i].addActionListener(this);
safae[i].setIcon(i0);
}
listeImage.add(i1);
listeImage.add(i2);
listeImage.add(i3);
listeImage.add(i4);
listeImage.add(i5);
listeImage.add(i6);
listeImage.add(i7);
listeImage.add(i8);
listeImage.add(i1);
listeImage.add(i2);
listeImage.add(i3);
listeImage.add(i4);
listeImage.add(i5);
listeImage.add(i6);
listeImage.add(i7);
listeImage.add(i8);
}
public void panel() {
//Panel gamePnl = new Panel();
pan.setLayout(new GridLayout(4, 0));
//this.setLayout(new GridLayout(4, 0));
for (int i = 0; i < safae.length; i++) {
pan.add(safae[i]);
}
}
public void setArrayImageIcon() {
for (int i = 0; i <2; i++) {
for (int ii = 1; ii < (safaee.length/2); ii++) {
//listeImage.add(safaee[ii]);
shuffle(listeImage);
}
}
}
public boolean sameValues() {
if (safae[btnID[0]].getIcon().equals(safae[btnID[1]].getIcon())) {
return true;
}
return false;
}
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < safae.length; i++) {
if (safae[i] == e.getSource()) {
//System.out.println(i);
if (counter == 1) {
btnID[1] = i;
safae[i].setEnabled(false);
safae[i].setIcon(listeImage.get(i));
safae[i].revalidate();
safae[i].validate();
safae[i].repaint();
pan.invalidate();
pan.validate();
pan.repaint();
pan.updateUI();
//System.out.println(btnID[0]+" "+btnID[1]);
if (sameValues()) {
pairesTrouvee++;
System.out.println("gagner");
safae[btnID[0]].setEnabled(false);
safae[btnID[1]].setEnabled(false);
if(pairesTrouvee == 8)
JOptionPane.showConfirmDialog(this, "WIN");
} else {
System.out.println("perdu");
try {
Thread.sleep(200);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
safae[btnID[0]].setEnabled(true);
safae[btnID[0]].setIcon(i0);
safae[btnID[1]].setEnabled(true);
safae[btnID[1]].setIcon(i0);
}
counter = 0;
}
else if (counter == 0) {
//System.out.println("tour de piste");
safae[i].setIcon(listeImage.get(i));
safae[i].setEnabled(false);
btnID[0] = i;
counter++;
}
}
}
}
public static void main(String[] args){
new Memoire().setVisible(true);
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Va refaire plutôt un autre sujet au lieu de compléter celui-ci car ce sont des problèmes différents.
Et profites en pour :
1/ commenter ton code car il est très long et ne donne pas envie d'être lu surtout qu'on ne sait rien de ton programme
2/ utiliser les balises d'affichage du code car là c'est illisible
3/ raccourcir ton code qui est trop long, on a peut être pas besoin de tout ce code
4/ décrire précisement ton problème !
--
Pylouq (Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
jubaben
Messages postés4Date d'inscriptionmardi 3 février 2009StatutMembreDernière intervention 7 juin 2012 4 juin 2012 à 22:01
bonjour,
j'ai un Graphics sur JPanel et je veux l'afficher sur JFrame sachant que j'ai sur celle-ci un JPanel en haut, un JPanel en milieu et deux boutons en bas.
j'ai essayé d'ajouter le graphe dans le JPanel du milieu mais il ne s'affiche pas.
panneau.add(graphe);
y a t-il une solution?
jubaben
Messages postés4Date d'inscriptionmardi 3 février 2009StatutMembreDernière intervention 7 juin 2012 5 juin 2012 à 19:38
bonjour,
en faite, j'utilise netbeans pour écrire l'application de mon pfd. donc j'ai un graphe à afficher sur un JPanel panneau de JFrame qui est générer automatiquement, j'ai essayé ça : panneau.add(graphe); // graphe est un JPanel qui contient le Graphics
merci d'avance.
cormandyr
Messages postés600Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention 8 juillet 201612 6 juin 2012 à 08:04
salut,
Normalement il devrait... (Genre de réponse qui aide beaucoup ^^)
Tes boutons changent aussi le contenu du panneau central? es-tu certain d'avoir un layout dans ce panneau central?
si juste avant tu lui donnes un layout style panneau.setLayout(new FlowLayout()); cela ne change rien?
En relisant les posts précédents, je ne vois pas le rapport entre Graphics et ton graphe.
Sinon, vérifications bateau, vérifie si graphe est instancié proprement avec de bonnes dimensions, ... Et, s'il n'est pas appelé automatiquement, utilise la méthode repaint() defois que...
--
Pylouq (Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)