Rondinelli Fotx
-
Posts
4 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Rondinelli Fotx
-
-
26 minutos atrás, iHollyZinhO disse:
O problema é que você está usando um for onde você comentou "DOIS GIROS", e neste você está instanciando novamente o vetor e adicionando no painel, fazendo com que os botões que foram instanciados na primeira iteração sejam perdidos.
Na verdade eu uso o "DOIS GIROS" justamente porque minha aplicação vai apresentar varios jpanels com os botões de imagens. Eles serão adicionados automaticamente de acordo com uma consulta sql que irei realizar, não consigo imaginar outra forma de adicioná-los a não ser com laço for. Você pode me dar uma luz? Obrigado.
-
Obrigado senhores @iHollyZinhO e @giu_d pela resposta.
Fiz algo similar aos que vocês mencionaram. Porém minha aplicação continua apenas pegando o ultimo valor do jpanel do laço (ou seja se clico no jbutton "marcar" do primeiro laço, ele desativa as imagens do segundo jpanel, o mesmo ocorre se eu clicar no jbutton "marcar" do segundo laço). Se fiz algo errado podem me crucificar!
Segue uma foto com minha aplicação;
Segue meu código
import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.JFrame.EXIT_ON_CLOSE; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.LineBorder; public class Selecionar extends JFrame{ private JPanel jpanel; private JButton btnselecionar; private JPanel jpanelFixo; private JButton botões[] = new JButton[3]; public Selecionar() { super("Selecionando Imagens"); setDefaultCloseOperation(EXIT_ON_CLOSE); //setLayout(null); setSize(800, 600); /*********************************************/ int qtdLoop = 2; jpanelFixo = new JPanel(); for (int x=0;x<qtdLoop;x++){//2 GIROS jpanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 11,20)); btnselecionar = new JButton("Marcar"); for (int i = 0; i < botões.length; i++) { botões[i] = new JButton(new ImageIcon("img/java.png")); jpanel.add(botões[i]); //jpanel.add(new JButton(new ImageIcon("img/java.png"))); } btnselecionar.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt) { for (int i=0;i<botões.length;i++){ botões[i].setEnabled(false); btnselecionar.setEnabled(false); } } }); jpanelFixo.add(btnselecionar, BorderLayout.SOUTH); jpanelFixo.add(jpanel); }//FIM DO LAÇO add(jpanelFixo, BorderLayout.CENTER); } public static void main(String[] args) { new Selecionar().setVisible(true); } }
-
Meus caros colegas
Estou tentando implementar uma função que selecione todas as imagens que o laço for gera e faça alguma função com elas (ex: setar a borda, deixar desativado), porém quando executo minha aplicação ela seleciona apenas os últimos botões com imagens, mas não os primeiros. Peço desculpas pelo código um tanto quanto primário pois sou novo nesta área, apesar da idade da linguagem.
Segue o cod.import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.JFrame.EXIT_ON_CLOSE; import javax.swing.JPanel; public class Selecionar extends JFrame { private JPanel jpanel; private JButton btnselecionar; private JPanel jpanelFixo; public Selecionar() { super("Selecionando Imagens"); setDefaultCloseOperation(EXIT_ON_CLOSE); //setLayout(null); setSize(800, 600); /*********************************************/ int qtdLoop = 2; jpanelFixo = new JPanel(); for (int x=0;x<qtdLoop;x++){//2 GIROS jpanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 11,20)); btnselecionar = new JButton("Marcar"); for (int i = 0; i < 3; i++) { jpanel.add(new JButton(new ImageIcon("img/iconecadastro2.png"))); } jpanelFixo.add(btnselecionar, BorderLayout.SOUTH); jpanelFixo.add(jpanel); }//FIM DO LAÇO add(jpanelFixo, BorderLayout.CENTER); btnselecionar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Component componentes[] = jpanel.getComponents(); for (Component c : componentes) { if (c instanceof JButton) { if(((JButton) c).isEnabled() == true){ ((JButton) c).setEnabled(false); }else{ ((JButton) c).setEnabled(true); } } } } }); } public static void main(String[] args) { new Selecionar().setVisible(true); } }
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Selecionar todas as imagens no laço for
em Java/Android SDK
Postado
Consegui fazer o que eu queria de uma outra forma, porém não sinto que meu código esta pratico, da maneira encontrada tem muitos if implementados no ActionListener, tens alguma ideia? Lembrando que precisa ser dinâmico pois terei de implementar vários painéis como este:
vindo de um arraylist ex:
Segue meu código:
Desde já agradeço toda atenção prestada!