Problème d'affichage JButton

Résolu/Fermé
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 - Modifié par Skymer le 19/10/2015 à 11:23
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 - 21 oct. 2015 à 10:07
Bonjour, j'ai décidé de faire le TP de la calculatrice en java, mon problème est que : les boutons sont initialisé par une boucle for, et son mis dans le bon JPanel :
for (String but : namNum){
i++;
butIni = new JButton(but);
if (i <= 12){
this.numButt.add(butIni); 
}else { 
this.othButt.add(butIni);
}

Et bah les JButtons de la boucle else et encore plus disparaissent totalement random, image :

celle est parfaite mais imaginez que le "*", jusqu'au ".", puisse partir d'un coup, bah c'est ce qui m'arrivent.
Merci de vos réponse

EDIT : Ah et au faite, quand j'enlève setRezisable sur ma JFrame, plus rien n'apparait en terme de JButton, sauf quand j'étire ma fenêtre

Skymer
"On à jamais rien, sans rien !"
"Ne jamais abandonnez"

4 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 oct. 2015 à 18:22
Bonjour,

Il va falloir ton code complet pour reproduire le bug, tes explications ne vont pas suffire...
0
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 75
19 oct. 2015 à 21:13
Je te ferais ça demain, si j'y pense ?
0
tatsuyad Messages postés 74 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 3 avril 2016
20 oct. 2015 à 05:30
bonjour, j'ai décidé de faire le TP de la calculatrice en java, mon problème est que : les boutons sont initialisé par une boucle for, et son mis dans le bon JPanel :


Comment veux-tu que cela s'affiche ? Les boutons sont joliment rangees avec
un algorithme simpliste.
0
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 75
20 oct. 2015 à 21:26
Ils disparaissent, voilà le code source pour KX (juste celui de la classe qui étends JFrame :
package fr.skymer.main;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Frame extends JFrame {
	
	private JPanel container = new JPanel();
	private JButton butIni;
	private JPanel numButt = new JPanel();
	private JPanel othButt = new JPanel();
	private JPanel pan = new JPanel();
	private Panel panel = new Panel();
	private int i;
	private String namNum[] = {"1","2","3","4","5","6","7","8","9","0",".","=","C","+","-","/","*"};
	
	public Frame(){
		//Fenêtre
		this.setSize(300,400);
		this.setVisible(true);
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(Frame.EXIT_ON_CLOSE);
		this.setTitle("Calculatrice");
		//ContentPane et placement des objets entre eux-mêmes
		this.setContentPane(container);
		this.panel.setPreferredSize(new Dimension(300,50));
		this.othButt.setPreferredSize(new Dimension(100,50));
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(panel, BorderLayout.NORTH);
		this.getContentPane().add(pan, BorderLayout.CENTER);
		this.pan.setLayout(new BorderLayout());
		this.pan.add(numButt, BorderLayout.CENTER);
		this.pan.add(othButt, BorderLayout.EAST);
		//Initialisation des boutons
		this.numButt.setLayout(new GridLayout(4,3,5,5));
		this.othButt.setLayout(new GridLayout(5,2,5,5));
		i = 0;
		for (String but : namNum){
			i++;
			butIni = new JButton(but);
			if (i <= 12){
				this.numButt.add(butIni);
			}else {
				this.othButt.add(butIni);
			}
		}
	}
	
}

0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 oct. 2015 à 22:07
Soit je n'ai pas bien compris ton problème soit tout au lié au fait que ton setVisible(true) est appelé trop tôt, tu affiches ta fenêtre alors qu'elle n'est pas terminée, il faut mettre ça à la fin de la construction.
0
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 75
20 oct. 2015 à 22:10
Ok je test ça demain
0
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 75
Modifié par Skymer le 21/10/2015 à 10:09
Donc pour reprendre ce que tu as dis, tu as raison il suffit de respecter un certains ordres et de déclarer logiquement, encore une fois on dois un fière chandelle à KX :3, bah merci, rectification : encore merci

PS : pourquoi s'embêter comme ça, étrange ....

Skymer
"On à jamais rien, sans rien !"
"Ne jamais abandonnez"
0