[Resolvido]Criando muitos botões

9 respostas
F

Eu tipo experimentei criar um array de botões.

Fiz este programa:

import java.awt.FlowLayout;

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


public class Buttoni extends JFrame {

	
JButton[] butts = new JButton[145];


public Buttoni(){
	super("Buttons");
	this.setLayout(new FlowLayout());
	this.setVisible(true);
	this.setSize(400,666);
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	for (int i = 0; i<butts.length; i++)
		
	{
		
		
		butts[i] = new JButton(String.format("%d", i));  
		
		
	}
	
	
	for (int i = 0; i<butts.length; i++)
	
	{
		
		
		this.add(butts[i]);
		
		
	}
	
	
	

	
	
}

public static void main(String[] args)
{
	
	
	
	new Buttoni();
	
}



}

O problema é que ao executar o programa é falha muitas vezes...
Ou não aparecem os botões, ou só aparecem metade deles...não percebo..

alguém me explica porquê??

9 Respostas

igor_ks

Copiei e colei o codigo aqui, e executou normalmente. O unico problema e que faltou um repaint, pois ele só aparece o botao quando maximiza ou mexe no size dele

igor_ks

especifique melhor o problema

Diego_Adriano

Cara, eu testei aqui e o problema que vejo é o tamanho do Vetor é muito grande, então ele demora pra carregar os botões … mas carrega …
Teste com um vetor menor para vc ver …

Abraços …

F

Mas o meu problema é que ele ás vezes executa muito rápido.
Outras só aparecem um x botões em vez do número desejado, ou é lento a aparecer…


Copiei e colei o codigo aqui, e executou normalmente. O unico problema e que faltou um repaint, pois ele só aparece o botao quando maximiza ou mexe no size dele

Igor por acaso, eu testei e quando mexo no size dele aparece logo.
Mas como faço isso do repaint?

igor_ks

adiciona o repaint() e validate() ficando assim:

public Buttoni() {
		super("Buttons");
		this.setLayout(new FlowLayout());
		this.setVisible(true);
		this.setSize(400, 666);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		for (int i = 0; i < butts.length; i++) {
			butts[i] = new JButton(String.format("%d", i));
		}

		for (int i = 0; i < butts.length; i++){
			this.add(butts[i]);
		}
		
		this.repaint();
		this.validate();	

		
		 
	}
F
igor_ks:
adiciona o repaint() e validate() ficando assim:
public Buttoni() {
		super("Buttons");
		this.setLayout(new FlowLayout());
		this.setVisible(true);
		this.setSize(400, 666);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		for (int i = 0; i < butts.length; i++) {
			butts[i] = new JButton(String.format("%d", i));
		}

		for (int i = 0; i < butts.length; i++){
			this.add(butts[i]);
		}
		
		this.repaint();
		this.validate();	

		
		 
	}

ok obrigado!

JhowTroMundo

Interessante o nome do array hehehe

F

por acaso não foi com intenção :smiley:

JhowTroMundo

por acaso não foi com intenção :smiley:

Sem falar no height do frame xD

Seu código tá cheio de mensagens subliminares kkk

Criado 23 de setembro de 2011
Ultima resposta 23 de set. de 2011
Respostas 9
Participantes 4