Pessoal estou fazendo uma calculadora em Java e não consigo completar a tela da minha calculadora.
Segue uma imagem dela e a parte códido do textfield.
GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
getContentPane().setLayout(layout);
// Configura as proridades de cada botao
//primeira linha
c.gridy = 0; // primeira linha
c.gridx = 4; // primeira coluna
c.ipadx = 0;
c.fill = GridBagConstraints.BOTH;
layout.setConstraints(tela, c);
getContentPane().add(tela);
Pelo que eu entendi você não está conseguindo colocar o JTextField ocupando todo o espaço horizontal, né isso?
Você pode resolver o seu problema usando vários tipos de gerenciadores de Layout.
Por exemplo, poderia usar um BorderLayout primeiro, colocando o JTextField na posição Norte, e depois colocaria um JPanel na posição Centro. Aí, esse panel você poderia aplicar o GirdBagLayout normalmente.
Tenta ver se assim funciona…
[]'s.
anderson.bonavides
kaique poderia me mostrar como ficaria? Sou muito novo em swing. Eu só mechia com o metisse mas agora resolvi fazer com o eclpse no braço.
Ficaria muito grato.
kaique
Cara, seria algo parecido com isso:
setLayout(new BorderLayout());
JTextField display = new JTextField();
add(display, BorderLayout.NORTH);
JPanel buttonsArea = new JPanel();
add(buttonsArea, BorderLayout.CENTER);
buttonsArea.setLayout(new GridLayout(6, 6)); // Informe o tamanho da sua matriz aqui
/* Exemplo para adicionar os botões da calculadora */
for (int i = 0; i < 35; i++) {
buttonsArea.add(new JButton("X"));
}
Coloque esse código no componente onde você está adicionando seus controles (JTextField, JButtons, etc…).
Com essa idéia, basta você adaptar para o que deseja…
[]'s.
anderson.bonavides
kaique pelo que eu entendi eu teria que alterar completamente minha calculadora. To certo?
kaique
No meu ponto de vista você vai alterar a parte mais simples da calculadora, que é adicionar os componentes na tela. Coloca tudo isso dentro de um método e chama ele no seu construtor. Acho que seria ruim se você tivesse que alterar as funcionalidades devido a essa mudança.
Só uma pergunta que me veio a mente agora, você está usando MVC certo?
[]'s.
anderson.bonavides
Não, ta tudo em um único repositório único. Não estou utilizando nenhum padrão de projeto.
kaique
Pois então cara acho que essa é uma ótima oportunidade de você fazer um refactoring do seu projeto e buscar encontrar por si próprio as vantagens de se utilizar design patterns. Se eu fosse você, eu iria atrás de alterar, até porque usando esse esquema de mais de um layout você não terá problemas com redimensionamentos na janela, pois os gerenciadores de layout farão todo o “trabalho sujo” por você…
Precisando, tamos aí…
[]'s.
leandro.anjos
Fala ai Anderson.
Pelo seu código não da pra saber como você esta adicionando os componentes no JPanel, principalmente o JTextField, pelo que eu entendi, você tem um JPanel chamado “tela” e naquele código você o adiciona ao layout do getContentPanel do JFrame. Certo?
Se eu fosse você faria isso, mudaria o LayoutManager do JFrame ou JDialog, tiraria o textfield do painel e o adicionaria no JFrame.
Tentei alterar aqui o seu código, mas infelizmente não pude testar por falta de tempo para implementar toda a tela, mas acredito que isto deve resolver. Se o JTextField continuar pequeno tente settar o atributo prefferedSize dele.
//GridBagLayout layout = new GridBagLayout(); //GridBagConstraints c = new GridBagConstraints(); getContentPane().setLayout(newBorderLayout());// Configura as proridades de cada botao //primeira linha // c.gridy = 0; // primeira linha // c.gridx = 4; // primeira coluna OBSERVE QUE AQUI VOCÊ NÃO ESTAVA COLANDO NA 1ª COLUNA, E SIM NA 5ª// c.ipadx = 0; // c.fill = GridBagConstraints.BOTH; // layout.setConstraints(tela, c); txtDisplay=newJTextField("0");getContentPane().add(txtDisplay,BorderLayout.NORTH);getContentPane().add(tela,BorderLayout.CENTER);
anderson.bonavides
Sobre o padrão de projeto seria interessante fazer utilizando um. Mas infelizmente o tempo não da e acho que não vai ter muita importancia para o tamanho do projeto. Até por que ele não vai crescer.
publicvoidexibirCalculadora(){GridBagLayoutlayout=newGridBagLayout();GridBagConstraintsc=newGridBagConstraints();getContentPane().setLayout(layout);// Configura as proridades de cada botao//primeira linhac.gridy=0;// primeira linhac.gridx=4;// primeira coluna c.ipadx=0;c.fill=GridBagConstraints.BOTH;tela.setHorizontalAlignment(JTextField.RIGHT);layout.setConstraints(tela,c);getContentPane().add(tela);//segunda linhac.gridy=1;// primeira linhac.gridx=0;// primeira colunac.ipadx=4;layout.setConstraints(funcao1,c);getContentPane().add(funcao1);c.gridy=1;// primeira linhac.gridx=1;// primeira colunac.ipadx=4;layout.setConstraints(sete,c);getContentPane().add(sete);c.gridy=1;// primeira linhac.gridx=2;// primeira colunac.ipadx=4;layout.setConstraints(oito,c);getContentPane().add(oito);c.gridy=1;// primeira linhac.gridx=3;// primeira colunac.ipadx=4;layout.setConstraints(nove,c);getContentPane().add(nove);c.gridy=1;// primeira linhac.gridx=4;// primeira colunac.ipadx=6;layout.setConstraints(divisao,c);getContentPane().add(divisao);//terceira linhac.gridy=2;// primeira linhac.gridx=0;// primeira colunac.ipadx=4;layout.setConstraints(funcao2,c);getContentPane().add(funcao2);c.gridy=2;// primeira linhac.gridx=1;// primeira colunac.ipadx=4;layout.setConstraints(quatro,c);getContentPane().add(quatro);c.gridy=2;// primeira linhac.gridx=2;// primeira colunac.ipadx=4;layout.setConstraints(cinco,c);getContentPane().add(cinco);c.gridy=2;// primeira linhac.gridx=3;// primeira colunac.ipadx=4;layout.setConstraints(seis,c);getContentPane().add(seis);c.gridy=2;// primeira linhac.gridx=4;// primeira colunac.ipadx=4;layout.setConstraints(multiplicacao,c);getContentPane().add(multiplicacao);//quarta linhac.gridy=3;// primeira linhac.gridx=0;// primeira colunac.ipadx=4;layout.setConstraints(funcao3,c);getContentPane().add(funcao3);c.gridy=3;// primeira linhac.gridx=1;// primeira colunac.ipadx=4;layout.setConstraints(um,c);getContentPane().add(um);c.gridy=3;// primeira linhac.gridx=2;// primeira colunac.ipadx=4;layout.setConstraints(dois,c);getContentPane().add(dois);c.gridy=3;// primeira linhac.gridx=3;// primeira colunac.ipadx=4;layout.setConstraints(tres,c);getContentPane().add(tres);c.gridy=3;// primeira linhac.gridx=4;// primeira colunac.ipadx=5;layout.setConstraints(subtracao,c);getContentPane().add(subtracao);//quinta linhac.gridy=4;// primeira linhac.gridx=0;// primeira colunac.ipadx=4;layout.setConstraints(funcao4,c);getContentPane().add(funcao4);c.gridy=4;// primeira linhac.gridx=1;// primeira colunac.ipadx=4;layout.setConstraints(zero,c);getContentPane().add(zero);c.gridy=4;// primeira linhac.gridx=2;// primeira colunac.ipadx=8;layout.setConstraints(virgula,c);getContentPane().add(virgula);c.gridy=4;// primeira linhac.gridx=3;// primeira colunac.ipadx=4;layout.setConstraints(resultado,c);getContentPane().add(resultado);c.gridy=4;// primeira linhac.gridx=4;// primeira colunac.ipadx=2;layout.setConstraints(soma,c);getContentPane().add(soma);//sexta linhac.gridy=5;// primeira linhac.gridx=3;// primeira colunac.ipadx=4;layout.setConstraints(backSpace,c);getContentPane().add(backSpace);c.gridy=5;// primeira linhac.gridx=4;// primeira colunac.ipadx=1;layout.setConstraints(limpar,c);getContentPane().add(limpar);zero.addActionListener(this);virgula.addActionListener(this);soma.addActionListener(this);resultado.addActionListener(this);um.addActionListener(this);dois.addActionListener(this);tres.addActionListener(this);quatro.addActionListener(this);cinco.addActionListener(this);seis.addActionListener(this);sete.addActionListener(this);oito.addActionListener(this);nove.addActionListener(this);subtracao.addActionListener(this);multiplicacao.addActionListener(this);divisao.addActionListener(this);limpar.addActionListener(this);tela.addActionListener(this);funcao1.addActionListener(this);funcao2.addActionListener(this);funcao3.addActionListener(this);funcao4.addActionListener(this);backSpace.addActionListener(this);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);pack();setVisible(true);}