Ir ao conteúdo
  • Cadastre-se

Rondinelli Fotx

Membros Juniores
  • Total de itens

    4
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. 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: private JPanel jpanel[] = new JPanel[2]; vindo de um arraylist ex: private List resultadoConsultaSql = new ArrayList(); private JPanel jpanel[] = new JPanel[resultadoConsultaSql.size()]; Segue meu código: import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JToggleButton; public class Selecionar extends JFrame{ private JPanel jpanel[] = new JPanel[2]; private JButton jbutton[][] = new JButton[jpanel.length][3]; private JToggleButton btnselecionar[] = new JToggleButton[jpanel.length]; private JPanel jpanelFixo; public Selecionar() { super("Selecionando Imagens"); setDefaultCloseOperation(EXIT_ON_CLOSE); //setLayout(null); setSize(800, 600); ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof JToggleButton) { String text = ((JToggleButton) e.getSource()).getActionCommand(); JToggleButton jb = ((JToggleButton) e.getSource()); //JOptionPane.showMessageDialog(null, text); int valor = Integer.parseInt(text); if(valor == 0){ int max = 1; for (int i = 0; i < max; i++) { for(int j = 0; j < 3; j++) { if(jb.isSelected() == true ){ jbutton[i][j].setEnabled(false); }else{ jbutton[i][j].setEnabled(true); } } } } if(valor == 1){ int max = 2; for (int i = valor; i < max; i++) { for(int j = 0; j < 3; j++) { if(jb.isSelected() == true ){ jbutton[i][j].setEnabled(false); }else{ jbutton[i][j].setEnabled(true); } } } } } } }; jpanelFixo = new JPanel(); for (int x=0;x<jpanel.length;x++) {//2 GIROS jpanel[x] = new JPanel(new FlowLayout(FlowLayout.LEFT, 11,20)); btnselecionar[x] = new JToggleButton();//selectall_icon.png btnselecionar[x].setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/selectall_icon.png"))); btnselecionar[x].setActionCommand(String.valueOf(x)); btnselecionar[x].addActionListener(listener); for (int i = 0; i < 3; i++) { jbutton[x][i] = new JButton(); jbutton[x][i].setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/java.png"))); jpanel[x].add(jbutton[x][i]); //jpanel.add(new JButton(new ImageIcon("img/java.png"))); } jpanelFixo.add(jpanel[x]); jpanelFixo.add(btnselecionar[x], BorderLayout.SOUTH); }//FIM DO LAÇO add(jpanelFixo, BorderLayout.CENTER); } public static void main(String[] args) { new Selecionar().setVisible(true); } } Desde já agradeço toda atenção prestada!
  2. @iHollyZinhO 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.
  3. 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); } }
  4. 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 publicações 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

×