Problème d'affichage JButton

Résolu
Skymer Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   -  
Skymer Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   75
 
Je te ferais ça demain, si j'y pense ?
0
tatsuyad Messages postés 75 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   75
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   75
 
Ok je test ça demain
0
Skymer Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   75
 
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