Alterar tamanho de JButton

7 respostas
E

Boa noite a todos,

Estou estudando um pouco de Java e resolvi fazer alguns testes de interface.
Criei um JPanel e defini o seu layout com BoxLayout, e adicionei dois botões. Eu queria que estes botões tivessem o mesmo tamanho então utilizei o método setSize, mas os botões continuam com o mesmo tamanho.

A classe que estou utilizando para criar o painel é a seguinte:

import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;

public class PainelEsquerdo extends JPanel{

	public PainelEsquerdo(){
		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createRaisedBevelBorder(), BorderFactory.createEmptyBorder(10, 4, 4, 4)));
		this.setVisible(true);
	}
	
	public void build(){
		
		JButton cadastro = new JButton("Cadastro");
		cadastro.addActionListener(new Ouvidor());
		
		JButton pedido = new JButton("Pedido");
		pedido.addActionListener(new Ouvidor2());
		pedido.setSize(100, 50);
		
		this.add(cadastro);
		this.add(Box.createRigidArea(new Dimension(0,5)));
		this.add(pedido);
	}
}
Obrigado

7 Respostas

phpinheiro

olá

tente setPreferredSize(100,50);

também não vi definição de tamanho para o botão cadastro.

makoto

Cara, primeiro você declara o layout como null

meupanel.setLayout(null);

depois vc usa o metodo setBounds do JButton para definir o tamanho e localização dele:

meubotao.setBounds(x,y,m,n)

onde x é a largura inicial, y é a altura inicial, m é a largura final e n é onde acaba a altura.

bons testes. :smiley:

phpinheiro

setBounds resolve perfeitamente o problema…porém aconselho vc a estudar sobre gerenciadores de layout. Pelo código, vc já teve ver isto algo do BoxLayout, não?

Se vc utiilizar coordenadas x e y, elas não se redimensionarão automaticamente se o usuário mudar o tamanho da janela.

marciofermino

seu problema é em questão a definição d layout

defina como null

E

Obrigado a todos pelas respostas.

Eu já tentei utilizar o setPreferredSize(new Dimension(150, 100)), mas ele também não funcionou.
Quanto ao Layout, eu não queria defini-lo como null, justamente pelo motivo do redimensionamento da tela. Os testes que eu estou fazendo são justamente estudos sobre layouts, onde eu tenho um frame definido com BorderLayout, e na localização LINE_START eu tenho este Painel com BoxLayout, desta forma eu consigo empilhar os botões no eixo Y.

Eu gostaria de poder deixar os botões com um tamanho padronizado, mas utilizando os gerenciadores de layout.

phpinheiro

Algumas vezes eu tive que forçar com os tres metodos de tamanho, e todos eles usando Dimension:

comp.setMinimumSize(new Dimension(150, 100));
comp.setPreferredSize(new Dimension(150, 100));
comp.setMaximumSize(new Dimension(150, 100));

Mas no meu caso o problema ocorreu no GridBag Layout.

E

Opa!!!

Funcionou, eu já havia pesquisado e visto algumas abordagens com a utilização do setPreferred, mas como disse não havia funcionado, mas agora utilizando o minimo e o maximo em conjunto funcionou!! Eu testei apenas o setMinimum e o setMaximum, sem o setPreferred e também funcionou.

Muito obrigado pela ajuda

Criado 15 de dezembro de 2008
Ultima resposta 15 de dez. de 2008
Respostas 7
Participantes 4