Itens dinamicos[RESOLVIDO]

23 respostas
CristianPalmaSola10

Entao galera eu tenho um JScollPane na minha tela e quero adicionar alguns itens dinamicamente nele entaum faço o seguinte…

List<TipoRecDesp> listaTipo = new TipoRecDespBO().buscarTodosTipos(new TipoRecDesp(null, Constantes.TIPO_DESPESA));
        this.lista = new ArrayList<TipoSelecionadoBean>();
        
        for(TipoRecDesp tipo : listaTipo) {
            JCheckBox check = new JCheckBox();
            check.setText(tipo.getDescricao());
            check.setSelected(true);
            this.lista.add(new TipoSelecionadoBean(tipo, check));
            this.panelScroll.add(check);
        }
        
        this.pack();
        this.repaint();

porem quando a tela é aberta o itens não estao a aonde deveriam estar eles naum aparecem, alerto que esse codigo esta no construtor da minha classe, mas e ai alguem sabe no que estou errando…

valeu pela atenção de todos que tentarem me ajudar…

23 Respostas

charleston10

Java pra desktop ?’

R

CristianPalmaSola10:
Entao galera eu tenho um JScollPane na minha tela e quero adicionar alguns itens dinamicamente nele entaum faço o seguinte…

List<TipoRecDesp> listaTipo = new TipoRecDespBO().buscarTodosTipos(new TipoRecDesp(null, Constantes.TIPO_DESPESA));
        this.lista = new ArrayList<TipoSelecionadoBean>();
        
        for(TipoRecDesp tipo : listaTipo) {
            JCheckBox check = new JCheckBox();
            check.setText(tipo.getDescricao());
            check.setSelected(true);
            this.lista.add(new TipoSelecionadoBean(tipo, check));
            this.panelScroll.add(check);
        }
        
        this.pack();
        this.repaint();

porem quando a tela é aberta o itens não estao a aonde deveriam estar eles naum aparecem, alerto que esse codigo esta no construtor da minha classe, mas e ai alguem sabe no que estou errando…

valeu pela atenção de todos que tentarem me ajudar…

Estranho, voce quer inserir itens ao JScrollPane ? tem certeza ? JScrollPane é só a API que faz a barra de rolagem, heheh, acho que nao tem como voce inserir qualquer coisa na barrar de rolagem.

CristianPalmaSola10

Sim java para desktop…

CristianPalmaSola10

Então concerteza eu me confundi um pouco…

o que eu quero na verdade é adicionar um check box para cada tipo que esta gravado no banco e pode se adicionado alterado e excluido conforme a lua em que o usuario se encontra…

entaum podendo haver muitos itens queria coloca-los em uma panel que contenham uma barra de rolagem automatica que se haja a necessidade ela aparece e possibilite a rolagem para a visualizacao de todos os itens…

que componente devo usar entao ?

valeu pela ajuda…

R
List<TipoRecDesp> listaTipo = new TipoRecDespBO().buscarTodosTipos(new TipoRecDesp(null, Constantes.TIPO_DESPESA));  
        this.lista = new ArrayList<TipoSelecionadoBean>();  
          
        for(TipoRecDesp tipo : listaTipo) {  
            JCheckBox check = new JCheckBox();  
            check.setText(tipo.getDescricao());  
            check.setSelected(true);  
            this.lista.add(new TipoSelecionadoBean(tipo, check));  
            this.panelScroll.add(check);  
        }  
          
        this.pack();  
        this.repaint();

Vamo ver se entendi pelo seu codigo…

Acho que ali em cima ta errado, o this.panelScroll.add(check) deveria estar fora do laço, pois a cada iteracao voce preenche o panelScroll, e sobreescreve a informacao anterior. Na verdade nao conheco bem o JCheckBox, mas acho que tem algo a ver com a logica que voce criou.

R

outro detalhe, a cada iteracao, voce da um new JCheckBox(), perceba que a cada new, o nome check permanece o MESMO, logo, voce sempre tera apenas 1 check =D…voce deveria criar 1 nome para cada JCheckBox adicionado.

charleston10

Cara eu uso essa classe aqui

http://javaaberto.blogspot.com.br/2012/08/jlist-com-checkbox.html

CristianPalmaSola10

rof20004 pelo que percebi voce naum conhece java swing pois se conhecesse saberia que o JCheckBox se trata de um componente de tela que possibilita selecionar e deseleciona-lo…

CristianPalmaSola10

valeu charleston10 vou dar uma olhada e qualquer duvida volto a perguntar, se conseguir resolver posto como ficou a solucao, valeu pela atenção…

R

CristianPalmaSola10:

rof20004 pelo que percebi voce naum conhece java swing pois se conhecesse saberia que o JCheckBox se trata de um componente de tela que possibilita selecionar e deseleciona-lo…

Nao entendi sua colocacao, o que isso tem a ver ?

Se eu nao conheco swing, voce muito menos, querer inserir informacoes em um JSCROLLPANE.

CristianPalmaSola10

Para ajudar alguem em um problema voce tem que conhecer mais que ela ter mais vivencia no assunto e se voce ja tiver passado por aquela situação melhor ainda… mas se voce naum conhece nada, naum sabe nada, e nem sabe que componente é o que faz me de desculpe mas naum tem como ajudar alguem… eu respondo os foruns depois de ler a duvida e souber alguma coisa que ajude mas eu procuro ja saber aonde estou entrando e com o que estou mexendo e nuam ficar tentando dar tiros no escuro, ninguem sabe tudo mas temos que ter a nocao disso e deixar certos assuntos de que naum temos muito conhecimento para quem tem mais conhecimento naquele assunto,…

CristianPalmaSola10

Posso naum conhecer muito bem mas estou tentando apreender e naum estou bravinho por que alguem me falou o que é verdade…

CristianPalmaSola10

v nao estou conseguindo fazer o seguinte parte…

lista.setCellRenderer(new CheckBoxCellRenderer());

a minha ide nao acha classe preciso adicionar mais algum jar a minha aplicação ?

R

Oloco menino, c ta com problema tao grande assim ? nao fiz nada pra voce, so tentei lhe ajudar, nao fique achando que vou dar de mao beijada a solucao para o seu problema, quem parece que ta com raivinha aqui é voce, so verificar suas postagens e as minhas. Voce e um belo exemplo que falta de educacao gera burrice. Se voce quer aprender, deveria pelo menos ser humilde e reconhecer que alguem quer lhe ajudar, pois mesmo que alguem nao saiba lhe ajudar o que vale é a intencao, voce tem o tipico comportamento de muleque que vem aqui no forum querer que os outros lhe deem tudo facilmente.

que lixo, tentando lhe ajudar, e porque nao consegui lhe ajudar age dessa forma…rsrsrsrs

so uma ultima ajuda, sua logica ta mal feita, corrija.

charleston10

v nao estou conseguindo fazer o seguinte parte…

view plaincopy to clipboardprint?
lista.setCellRenderer(new CheckBoxCellRenderer());

a minha ide nao acha classe preciso adicionar mais algum jar a minha aplicação ?

Não, é só criar a classe CheckBoxCellRenderer

import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Charleston Anjos
 */
public class CheckBoxCellRenderer implements ListCellRenderer{

    Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

        JCheckBox checkbox = (JCheckBox) value;

        checkbox.setBackground(isSelected ? list.getSelectionBackground() : list.getBackground());
        checkbox.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
        checkbox.setEnabled(list.isEnabled());
        checkbox.setFont(list.getFont());
        checkbox.setFocusPainted(false);
        checkbox.setBorderPainted(true);
        checkbox.setBorder(isSelected ? UIManager.getBorder("List.focusCellHighlightBorder") : noFocusBorder);

        return checkbox;
    }

}
CristianPalmaSola10

Tenho mais o que fazer do que perder o meu tempo com o mago da idiotice, ajude quem vc pode ajudar quem voce naum pode ajudar naum ajude outros que podem ajudar o ajudaram, ta bele…

desculpa se minha logica naum é tao boa mestre da logicas escabrosas…

kkkkkkkkkkkkkk

rachei o bico com sua raivinha agora …

CristianPalmaSola10

charleston10 valeu pela ajuda so lhe peço desculpa pelos comentarios desnecessarios que foram colocados aqui nesse post, as pessoas deveriam achar o que fazer ao inves de ficar se metendo no que naum sabem…

charleston10

Gente é sério isso?

Aff… parecem até criancinhas mimadas brigando.

Não percam o tempo discutindo besteira

Relaxa…

mas ai deu certo ?’

CristianPalmaSola10

to fazendo qualquer duvida eu posto novamente…

CristianPalmaSola10

Ate funcionou so a selecao que ficou fixa naum consigou desmarcar um item…

no casso adicionei todos os componentes ja selecionados mas naum consigou desmarcar-los…

charleston10

Olha eu te passei essa classe, mas eu tenho uma personalizada que tive que alterar pra ficar do jeito que eu queria.. só vc mudar e adaptar pra vc..

Vc de alguma maneira vai ter que passar o limite do seu Array para o For não bugar sendo infinito..
Depois q vc arrumou bonitinho vc tem que passar esses eventos para seu JFrame..
O codigo ta la embaixo..

/**
 * @description Classe que faz com que a lista de computadores recebam
 *              também o componente checkbox para o usuário poder selecionar.
 */

package negocio.apresentacao;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JList;
import javax.swing.JCheckBox;
import negocio.clsCSV;

/*
 * Eventos da classe (métodos)
 *
 * @clicaLista //o usuario clica na lista e o checkbox recebe valor ou nao
 * @preencherComputadores //preenche a lista
 * @limitePC //verifica olimite de dados que a lista ira ter
 * @selecionarComputadores //seleciona todos computadores
 * @deselecionarComputadores //deselciona todos computadores
 * @pegaItemLista //pega o nome da seleção
 */

/**
 * @data 29/11/2012
 * @author Charleston Anjos
 * @version 12.101
 * @alteração 29/11/2012
 */
public class clsJList implements interfaces.interfaceJList {

    clsCSV csv = new clsCSV();
    private int total_linha = 0; //VARIAVEL PRINCIPAL (para saber o limite do for)

    public clsJList(){
        
        //pega o total de linhas que existem no registro csv
        try {
            total_linha = csv.TotalLinha();            
        } catch (Exception ex) {
            Logger.getLogger(clsJList.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void ClicaLista(JList jLista,java.awt.event.MouseEvent evt){
        int index = jLista.locationToIndex(evt.getPoint());

        if(index != -1){
          JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);
          checkbox.setSelected(!checkbox.isSelected());
          jLista.repaint();
        }
    }

    public void PreencheLista(JList jLista){
        try{
            
            //Permite que a lista possa conter CheckBox
            jLista.setCellRenderer(new clsCheckBoxCellRenderer());

            //objeto que vai guardar os valores da lista
            Object[] cbArray = new Object[3];
            
            //faz um looping até o final
            //obs: a linha 0 é o nome da coluna
           for(int i=0;i<total_linha;i++){               
               cbArray[i] = new JCheckBox("1");
           }
            

            //preenche com os dados da tabela
            jLista.setListData(cbArray);
            
        }catch(Exception e){
            e.printStackTrace();
        }        
    }

     public void SelecionarTodos(JList jLista){
        for(int i=0;i<total_linha;i++){

            int index = i;

            if(index != -1){
                JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);
                checkbox.setSelected(true);
                jLista.repaint();
            }
        }
    }

    public void DeselecionarTodos(JList jLista){
        for(int i=0;i<total_linha;i++){

            int index = i;

            if(index != -1){
              JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);
              checkbox.setSelected(false);
              jLista.repaint();
            }
        }
    }

    public String PegaItemLista(JList jLista){
        
        String item = null;

        try {

                /*
                 * faz um busca em todos os checkbox da lista
                 * para verificar quais estão selecionados
                 * e retornando o texto do checkbox
                 */

                //verifica em toda lista
                for(int i=0;i<total_linha;i++){

                    //pega o indice pela contagem do for
                    int index = i;

                    if(index != -1){

                      //pega o checkbox da lista para fazer a comparação
                      JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);

                      //verifica se o checkbox da lista foi selecionado
                      if (checkbox.isSelected()==true){
                          item = checkbox.getText();
                      }
                    }
                }

            } catch (Exception ex) {
               ex.printStackTrace();
            }
         return item;
    }


}
Passando eventos para a Lista do seu Jframe
clsJList lista = new clsJList(); //objeto da classe

 /** Creates new form jfMensagem */
    public jfFrame() {
        initComponents();

        
        lista.PreencheLista(nome_da_sua_lista);
    }
private void jListaPCMouseClicked(java.awt.event.MouseEvent evt) {                                      
        // TODO add your handling code here:
        lista.ClicaLista(jListaPC, evt);
}    

private void jcbSelecaoTodosActionPerformed(java.awt.event.ActionEvent evt) {                                                
        // TODO add your handling code here:
        if(jcbSelecaoTodos.isSelected())lista.SelecionarTodos(jListaPC);
        else lista.DeselecionarTodos(jListaPC);
    }
CristianPalmaSola10

Entao consegui resolver colocando um evento de mouselistener e programando no metodo do mouse click fazendo a logica para trocar a seleção do componente muito obrigado pela sua ajuda amigo valeu mesmo…

charleston10

Se precisar “Tamo Aí”…

=]

Criado 30 de novembro de 2012
Ultima resposta 30 de nov. de 2012
Respostas 23
Participantes 3