Alterar tamanho de JButton

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:

[code]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);
}

}[/code]
Obrigado

olá

tente setPreferredSize(100,50);

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

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:

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.

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

defina como null

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.

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.

1 curtida

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