Bom dia galera do GUJ, + uma vez estou precisado de uma foça de vcs, é seguinte tenho uma tela q contem vários checkbox e já estou imaginando como vou fazer para validar esse campo, queria outro método q não seja dessa forma um por um.
if (Check_Imo_agua.isSelected()) {
agua="S";
}else{
agua="N";
}
Dessa maneira vai dar um trabalhão queria usar algum método q facilitar essa validação. Achei um metodo aqui no forum q pode me ajuda mas nao tenho ideia de como implementa essa solução abaixa ta o metodo q achei.
public static List<Component> getAllComponents(Container container) {
List<Component> components = new ArrayList<>();
for (Component c : container.getComponents()) {
components.add(c);
if (c instanceof Container) {
components.addAll(getAllComponents((Container) c));
}
}
return components;
}
ja para utilizar esse metodo pensei e algo assim
public void validarCheckBox() {
for (Component c : Ulti.getAllComponents(getRootPane())) {
if (c instanceof JCheckBox) {
JCheckBox field = (JCheckBox) c;
if (field.isSelected()) {
agua="S";
energia="S";
pavimentacao="S";
} else {
agua="N";
energia="N";
pavimentacao="N";
}
}
}
}
Essa é imagem da tela da q esto falando alem desse check ainda tem mas
[/img]
http://imageshack.us/a/img824/4832/1a4.png[img]
um checkbox vai valer pra 3 propriedades?
Não. isso não pode tá certo.
cada checkbox deve ter um name ou id representando cada propriedade. por name que vc vai verificar se a propriedade foi selecionada ou não.
exato ai é q ta não sei como verificar o nome e seta os valores para cada um
Se vc não souber utilizar um setName e um getName não tem como vc desenvolver seu programa. É melhor começar com coisas mais simples, pra depois ir crescendo.
De qualquer forma, esse texto pode lhe ajudar:
o rogelgarcia dá um exemplo usando HashMap bem legal aqui:
boa noite Luiz Augusto Prado, ate sei usa os metodos getter e setter o problema é verificar os checkbox e pegar o nomes deles, já tentei isso daqui mas me traz null os nomes dos componentes
[code]
public void validarCheck() {
for (Component c : Ulti.getAllComponents(getRootPane())) {
if (c instanceof JCheckBox) {
JCheckBox field = (JCheckBox) c;
if (field.isSelected()) {
System.out.println("true " + field.getName());
}else{
}
}
}
}[/code]
[quote=adsadilson]boa noite Luiz Augusto Prado, ate sei usa os metodos getter e setter o problema é verificar os checkbox e pegar o nomes deles, já tentei isso daqui mas me traz null os nomes dos componentes
[code]
public void validarCheck() {
for (Component c : Ulti.getAllComponents(getRootPane())) {
if (c instanceof JCheckBox) {
JCheckBox field = (JCheckBox) c;
if (field.isSelected()) {
System.out.println("true " + field.getName());
}else{
}
}
}
}[/code][/quote]
onde vc cria os checkboxes?
vc não faz isso? olha:
JCheckBox ch = new JCheckBox();
ch.setName("cbx_eletricidade"); // pq não usa o setName depois de criar o objeto?
// tá aparecendo null quando dá getName pq não usou o setName.
// tenta fazer isso e ve se funciona. Amanhã volto a ver o post.
Assim Luiz estou engessado no netbeans esse é problema, eu utilizo essa IDE para desenvolver todo o layout da telas aqui quando eu precisa usar algo q é personalizando na criação fico sem sabe fazer o código q o netbeans criar é esse daqui
Check_Imo_agua = new javax.swing.JCheckBox();
Check_Imo_energia = new javax.swing.JCheckBox();
Check_Imo_agua.setName("agua");
Check_Imo_agua.setSelected(true);
Check_Imo_agua.setText("Água");
Check_Imo_agua.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Check_Imo_aguaActionPerformed(evt);
}
});
consegui introduzir esse método na inicialização do jcheckbox Check_Imo_agua.setName(“agua”); agora o método field.getName(); me retornou o nome do jcheckbox como eu devo associa os jcheckbox selecionando a recebe o valor “S” e os não selecionando recebe “N”
Ok, agora estamos andando… tenho umas perguntas pra lhe fazer
-
vc sabe me dizer por que vc precisaria de um listener (Check_Imo_aguaActionPerformed) no seu checkbox? o que a mudança de estado do checkbox dispararia? Não seria necessário apenas o método getAllComponents para capturar os valores do seu checkbox? Talvez, não precise desse Check_Imo_aguaActionPerformed.
-
Por que vc precisa atribuir ‘S’ para true e ‘N’ para false? não é mais fácil persistir true ou false?
-
é obvio que os formulários são swing, mas seus dados serão enviados pela internet? se sim, por qual protocolo? Irá utilizar socket ou será uma aplicação desktop?
-
como vc vai persistir estes dados? vai ser em um banco de dados ou um arquivo de texto?
[quote=Luiz Augusto Prado][quote=adsadilson]
Check_Imo_agua.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Check_Imo_aguaActionPerformed(evt);
}
});
[/quote]
Ok, agora estamos andando… tenho umas perguntas pra lhe fazer
-
vc sabe me dizer por que vc precisaria de um listener (Check_Imo_aguaActionPerformed) no seu checkbox? o que a mudança de estado do checkbox dispararia? Não seria necessário apenas o método getAllComponents para capturar os valores do seu checkbox? Talvez, não precise desse Check_Imo_aguaActionPerformed.
-
Por que vc precisa atribuir ‘S’ para true e ‘N’ para false? não é mais fácil persistir true ou false?
-
é obvio que os formulários são swing, mas seus dados serão enviados pela internet? se sim, por qual protocolo? Irá utilizar socket ou será uma aplicação desktop?
-
como vc vai persistir estes dados? vai ser em um banco de dados ou um arquivo de texto?
[/quote]
Bom dia Luiz, bom esse (Check_Imo_aguaActionPerformed) foi criando automaticamente pelo netbeans apenas coloquei o objeto no jpanel e ele inseri-o esse código sobre a persistência de dados na atribuição de ‘S’ e ‘N’ é porque estou passado um sistema feito em delphi para java onde o mesmo vai ter q usar o banco dado já existente e ainda usando o firebird eu ate poderia usar 0 e 1 mas como eu te falei vou usar um banco já populate, esse sistema esta sendo em desktop e vou persisti estes dados direto no banco de dados
agora o precedimento seria isso daqui Luiz
public void validarCheck() {
for (Component c : Ulti.getAllComponents(getRootPane())) {
if (c instanceof JCheckBox) {
JCheckBox field = (JCheckBox) c;
Imovel m = new Imovel();
if (field.isSelected()) {
switch (field.getName()) {
case "agua":
case "energia":
m.setImo_agua("S");
m.setImo_energia("S");
break;
}
} else {
switch (field.getName()) {
case "agua":
case "energia":
m.setImo_agua("N");
m.setImo_energia("N");
break;
}
}
}
}
}
[quote=adsadilson]agora o precedimento seria isso daqui Luiz
public void validarCheck() {
for (Component c : Ulti.getAllComponents(getRootPane())) {
if (c instanceof JCheckBox) {
JCheckBox field = (JCheckBox) c;
Imovel m = new Imovel();
if (field.isSelected()) {
switch (field.getName()) {
case "agua":
case "energia":
m.setImo_agua("S");
m.setImo_energia("S");
break;
}
} else {
switch (field.getName()) {
case "agua":
case "energia":
m.setImo_agua("N");
m.setImo_energia("N");
break;
}
}
}
}
}
[/quote]
Olha, eu vejo que vc não entendeu como funciona um switch-case. Se vc está no 6º período deveria saber isso por obrigação. Eu recomendaria fortemente vc dar uma estudada antes de realizar esta migração porque se vc fizer algo errado, além de ser demitido pode ter que ser obrigado a pagar os prejuízos. Não é possivel lhe ajudar sem alguns pré-requisitos. vou te passar alguns links:
comece por este:
http://www.dm.ufscar.br/~waldeck/curso/java/
como usar um switch-case:
http://www.dm.ufscar.br/~waldeck/curso/java/part26.html#select
http://docs.oracle.com/javase/tutorial/uiswing/index.html
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html
alguns exemplos que lhe ajudarão:
http://docs.oracle.com/javase/tutorial/uiswing/components/button.html
Amigo, não me interprete mal, mas não dá pra saber java avançado sem saber o básico.
Veja os links que o Luiz te indicou, tem duas apostilas da Caelum tmb que gosto muito de Lógica e OO com Java. De uma lida, estude mais.
Aqui serve para dúvidas e não para formação.
Não quero que deixe de participar do fórum, mas você precisa ter uma coerência entre seu conhecimento e seu desenvolvimento.
Leia os indicados e qualquer dúvida pergunte.
obrigado pela colaborações de vocês vou ter mais cautela em sana minha duvidas, esse modelo switch q exibir aqui um colega q me passou dizendo que eu poderia usa assim por isso pensei q estivesse certo, queria algo se fosse possível utilizar o switch como venho fazendo nesse modelo ai ele me sugeriu esse switch, mas vou procura estudar mais.
if ("a".equals(tipo) || "b".equals(tipo)) {
// comando...
} else if ("tipo".equals(tipo) || "c".equals(tipo) || "d".equals(tipo)) {
// comando...
} else if ("tipo".equals(tipo) || "e".equals(tipo) || "f".equals(tipo)) {
// comando...
} else if ("g".equals(tipo) || "h".equals(tipo)) {