Desculpe se farei uma pergunta besta, mas esbarrei em um problema e não estou conseguindo resolver.
Fiz um sistema utilizando a interface gráfica do netbeans.
O programa estava funcionando bem, quando esbarrei na seguinte questão: Tenho que criar um campo via código, pois irá depender de algumas informações do banco.
Então fiz o seguinte, apenas como teste para incluir um botão:
initComponents();
this.setSize(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton b = new JButton();
b.setSize(20,50);
panel.add(b);
this.add(panel);
Quando eu comento a linha do “initComponents();” funciona, porém quando ela não esta comentada, o panel e o botão criado não aparecem. Como isso é feito? Como se inclui componentes via código depois do InitComponents()?
Poxa…também não deu certo…veja se estou fazendo algo errado!
initComponents();
this.setSize(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton b = new JButton();
b.setSize(20,50);
panel.add(b);
this.add(panel);
b.setVisible(true);
panel.setVisible(true);
M
mauricionarcizo
cara desculpe eu nao havia testado o código antes… pega esse aqui… testei e deu certo… só faltou tu setar o tamanho do panel…
initComponents();
this.setSize(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton b = new JButton();
panel.setSize(200,200);
b.setSize(20, 50);
panel.add(b);
this.add(panel);
L
LucasGCosta
Cara…valew mesmo!
Não acredito q era só isso!
Olha só …sem querer abusar da sua boa vontade, mas…
Por que não consigo mudar a posição o botão que criei?
Tem algo mais q deve ser feito?
tentei colocar setLocation(30, 180); mas não deu certo
S
Stepo
tenta o método setBounds();
M
mauricionarcizo
faz assim ó...
getContentPane().setLayout(null);
initComponents();
this.setSize(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton b = new JButton();
panel.setLocation(10, 100);
b.setLocation(10, 100);
panel.setSize(200, 200);
b.setSize(20, 150);
b.setText("Botao");
panel.add(b);
this.add(panel);
voce deve primeiro setar o layout como null e depois setar a posicao do panel pois os seu botao está dentro do panel senao fizer isso o seu botao nao irá para a posição que quer
L
LucasGCosta
Quase lá pessoal…com a resposta acima, o panel até mudou a localização, porém, continuo sem conseguir mover o jbutton.
Segue o código.
getContentPane().setLayout(null);
initComponents();
this.setSize(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLocation(10,100);
panel.setSize(200,200);
panel.setVisible(true);
JButton b = new JButton();
b.setText("teste");
b.setSize(20,50);
b.setVisible(true);
panel.add(b);
this.add(panel);
D
davidbuzatto
Vc não consegue mover seu botão pois o layout do painel não é null.
O ideal é utilizar algum gerenciador de layout para organizar sua interface gráfica, mas se você quer mesmo ter controle total sobre a posição, vc então continua a usar o layout null.
O que você deve fazer é:
[]'s
L
LucasGCosta
Entendi David,
Fiz da forma que falou, troquei alterei para o panel.setLayout(null) e deu certo.
Desta forma vou conseguir fazer exatamente o que quero, mesmo assim, você acha que eu devo utilizar um Manager?
Desde já, agradeço pela ajuda de todos!
D
davidbuzatto
Então Lucas, o ideal é usar, pois o gerenciador vai cuidar do redimensionamento dos componentes para você caso seja necessário, entretanto, em situações onde você tem interfaces muito complexas, fica difícil usar um gerenciador, pois normalmente eles mais atrapalham do que ajudam. Em um projeto que implementei ano passado, o cliente queria uma interface beeeem complexa, repleta de tabelas, botões, abas, campos de diversos tipos e tamanhos, então tive que apelar para o layout nulo. Existem também outros gerenciadores de layout que são disponibilizados em bibliotecas a parte como o MigLayout.
Cara…muito obrigado pelas dicas, realmente vou pensar no que será o melhor no meu caso!
Mais uma vez obrigado, quanto a piada, excelente cara!
Caso resolvido!
P
pedrinho20
Senhores,
Aproveitando a Thread. Sobre o uso do setBounds.
No caso das interface gráficas bem complexas, como o nosso amigo davidbuzatto comentou…
Não há problemas quanto a resolução em diferentes monitores ? Sei que o mais correto é usar os gerenciadores de layout,
mas as vezes eles me enchem a paciência !
D
davidbuzatto
Oi Pedro,
Tem problema sim, pois como não há um gerenciador para organizar os componentes, estes ficarão fora da tela.
Para resolver isso, você pode usar JPanel dentro de um JScrollPane e então colocar seus componentes no painel.