Probleme d'affichage

EssayeEncore -  
 SPhcar -
Bonjour,

Je vais essayer d'être clair, essayez d'être indulgent...
Voila je suis entrain de faire un programme qui résout automatiquement les sudoku en Java, qui m'affiche une fenêtre avec une barre menu et 81 JTextField (je sais c'est peut être beaucoup, mais croyez moi c'est indispensable), mon programme fonctionne très bien mais j'ai un petit souci gênant, quand je le lance avec éclipse dans un premier temps la fenêtre s'ouvre la barre menu est bien la et elle fonctionne, mais les 81 JTextFields n'apparaisse pas... sur le moment j'ai pensais a une erreur dans mon code mais encore plus surprenant si je réduit ma fenêtre et l'agrandit, a se moment là les 81 JTextField apparaisse sans problème comme je le désire, seulement cette manipulation n'est pas super pratique...

Avez vous des conseils a me donner pour essayer de résoudre se problème, qui n'a rien d'urgent ou de fondamental mais qui enrichirait ma culture générale.

Je vous met le code en espérant que ça ne fasse pas trop lourd.

public class Fenetre extends JFrame implements ActionListener
{
private JSplitPane p1,p2;
private JLabel intro = new JLabel("Resoud ton Sudoku");
private JPanel p3 = new JPanel();
private JPanel p4 = new JPanel();
private JButton resoud = new JButton("Resoudre");
private JTextField tab[][] = new JTextField[9][9];
private JTextField tabde[] = new JTextField[81];
private int tabsud[][] = new int[9][9];
private Sudoku sud;
private JMenuBar barremenu = new JMenuBar();
private JMenu fichier = new JMenu("Fichier");
private JMenuItem resoudre = new JMenuItem("Resoud");
private JMenuItem annul = new JMenuItem("Annuler");

public Fenetre()
{
this.setVisible(true);
this.setTitle("Sudoku");
this.setSize(700,700);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setJMenuBar(this.barremenu);
this.fichier.add(resoudre);
this.fichier.add(annul);
this.barremenu.add(this.fichier);
this.p4.setLayout(new GridLayout(9,9));
for(int i = 0; i < 9; i++)
{
for(int j = 0; j < 9; j++)
{
this.tab[i][j] = new JTextField();
this.tab[i][j].setFont(new Font("TimesRoman", Font.PLAIN, 72));
this.p4.add(this.tab[i][j]);
}
}
this.setContentPane(p4);
this.resoudre.addActionListener(this);
this.annul.addActionListener(this);
}

Si vous avez des solutions a me proposer je suis preneur !

Merci d'avance.

7 réponses

SPhcar
 
Si je peux me permettre, j'ai déjà rencontré ce problème. En fait, ce que je te propose, est d'ajouter tes éléments graphiques à ta fenêtre puis ensuite de la rendre visible.

public class Fenetre extends JFrame implements ActionListener
{
private JSplitPane p1,p2;
private JLabel intro = new JLabel("Resoud ton Sudoku");
private JPanel p3 = new JPanel();
private JPanel p4 = new JPanel();
private JButton resoud = new JButton("Resoudre");
private JTextField tab[][] = new JTextField[9][9];
private JTextField tabde[] = new JTextField[81];
private int tabsud[][] = new int[9][9];
private Sudoku sud;
private JMenuBar barremenu = new JMenuBar();
private JMenu fichier = new JMenu("Fichier");
private JMenuItem resoudre = new JMenuItem("Resoud");
private JMenuItem annul = new JMenuItem("Annuler");

public Fenetre()
this.setVisible(true);for(int i = 0; i < 9; i++)
{
for(int j = 0; j < 9; j++)
{
this.tab[i][j] = new JTextField();
this.tab[i][j].setFont(new Font("TimesRoman", Font.PLAIN, 72));
this.p4.add(this.tab[i][j]);
}
}
this.setContentPane(p4);
this.resoudre.addActionListener(this);
this.annul.addActionListener(this);
this.setVisible(true);
}
1
EssayeEncore
 
Merci SPhcar, ca marche trés bien, mais je ne sais pas pourquoi on est obligé de mettre le setvisible 2 fois... l'important c'est que ca marche.... Merci de ta reponse encore un fois.

PS : j'ai exporter le programme en .exe et la ca ne le fait plus, je ne me l'explique pas...
0
SPhcar
 
lol... tu peux enlever le premier setVisible() je pense...
Essaie et dis moi si ça marche...
+++
0
EssayeEncore
 
Ca marche aussi, remarque c'est plus logique de rendre la fenetre visible aprés avoir chargé les éléments, mais bon c'est quand même bizarre, sur la plus par des programmes je met le setvisible au debut et ca marche tres bien. Ca doit etre du a la quantité et au poid des éléments à charger.

Encore merci SPhcar
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EssayeEncore
 
Tiens j'ai un autre probleme toujours d'affichage tu vas peut etre pouvoir m'aider :
J'ai une JFrame avec une barre de menu, un menu avec deux items, nouveau et recherche.
J'aimerai que quand je clique sur nouveau le JPanel correspondant à nouveau apparaisse et que quand je clique sur recherche le JPanel correspondant a recherche apparaisse mais cela dans la meme JFrame.
Au debut j'avais penser faire 2 JPanel :
-pnouveau
-precherche
quand je cliqué sur nouveau il m'affiché pnouveau et si ensuite je faisait recherche Il me faisait un removeA
0
EssayeEncore
 
quand je cliqué sur nouveau il m'affiché pnouveau et si ensuite si je fait recherche Il me faisait un removeAll() de ma JFrame et m'affiche precherche.
Mais ca ne marche pas...
Alors j'ai decidé de simplifié en utilisant 1 seul JPanel et en interchangeant mes composant suivant si on clique sur nouveau ou sur recherche mais la encore quand je clique sur nouveau ca marche parfait quand je clique sur recherche j'ai une fenetre blanche.

public void actionPerformed(ActionEvent hub)
{
if(hub.getSource().equals(this.nouveau))
{
this.pglobal.removeAll();
this.pglobal.setLayout(new GridLayout(6,1));
// met les composants dans pglobal.
this.majpn1();
this.majpn2();
this.majpn3();
this.majpn4();
this.majpn5();
this.majpn6();
this.repaint();
this.pglobal.setVisible(true);
}
if(hub.getSource().equals(this.recherche))
{
this.pglobal.removeAll();
this.pglobal.setLayout(new GridLayout(2,1));
// met les composants dans pglobal.
this.paneauRechercheMAJ();
this.repaint();
this.pglobal.setVisible(true);
}
}
0
SPhcar
 
Bonjour,

Pourrais-tu s'il te plaît m' envoyer tes sources à l 'adresse suivante sandrine_phcar@yahoo.fr?
0