Ir para conteúdo
Fórum CódigoFonte.net

rodrigo.rrch

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

  1. rodrigo.rrch

    JS - Filter array

    Bom dia pessoal. Estou com duvida em como filtrar um array junto com seus '"elementos filhos". Eu tenho um array com name e children e quero filtrar por todos que tenham o name igual a "wat". Aqui eu fiz um exemplo https://jsfiddle.net/rodrigorrch/gpszg7aw/1/ O meu retorno esta sendo assim: [ { "name": "wat" }, { "name": "wat" } ] Mas eu gostaria que meu retorno fosse assim: [ { "name": "wat" }, { "name": "wat" }, { "name": 'child folder', "children": [ { "name": 'child folder 1', "children": [ { "name": 'wat' } ] }, { "name": 'wat' }, { "name": 'child folder 2', "children": [ { "name": 'wat' } ] } ] } ] Alguem poderia me ajudar ? Abraco
  2. Bom dia, tudo bem ? Venho aqui mais uma vez pedir uma luz hehe. Eu fiz um pequeno exemplo com 4 classes, são elas: ButtonColumn.java -> Classe que cria o botão TabelaModelTeste.java -> Classe AbstractTableModel TesteBean.java -> Bean set e get (cod e codOrig) jdialogTest.java -> Gui do aplicativo O problema é o seguinte, ele cria o botão na jtable (pelo menos visualmente - aparece um botao arredondado) mas quando eu clico no botão ele não faz nada, simplesmente não executa os métodos getTableCellEditorComponent, getCellEditorValue e actionPerformed da classe ButtonColumn. Fazendo uma analogia parece que estou clicando em uma imagem Segue os códigos TabelaModelTeste.java public class TabelaModelTeste extends AbstractTableModel{ private final int COL_COD = 0; private final int COL_CODORIG = 1; private final int COL_ACAO = 2; private ArrayList<TesteBean> teste; private String[] colunas = new String[] { "Cod", "Cod Orig", ""}; public TabelaModelTeste(){ teste = new ArrayList<TesteBean>(); } public TabelaModelTeste(ArrayList<TesteBean> lista){ this(); teste.addAll(lista); } @Override public int getRowCount() { return teste.size(); } @Override public int getColumnCount() { return colunas.length; } @Override public String getColumnName(int column) { return colunas[column]; } @Override public Object getValueAt(int rowIndex, int columnIndex) { TesteBean v = (TesteBean) teste.get(rowIndex); switch (columnIndex) { case COL_COD: return v.getCod(); case COL_CODORIG: return v.getCodOrig(); case COL_ACAO: return "Apagar"; default: throw new IndexOutOfBoundsException("columnIndex out of bounds"); } } } jdialogTest.java public class jdialogTest extends javax.swing.JDialog { ArrayList<TesteBean> lista; private TabelaModelTeste model; public jdialogTest(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); lista = new ArrayList<TesteBean>(); lista.add(new TesteBean(1,2)); lista.add(new TesteBean(1,2)); lista.add(new TesteBean(4,1)); model = new TabelaModelTeste(lista); jTableTeste.setModel(model); ButtonColumn buttonColumn = new ButtonColumn(jTableTeste, 2); } // RETIREI O CÓDIGO AQUI POR SER PADRÃO DO JDIALOG // private void initComponents() ... // public static void main(String args[]) ... } ButtonColumn.java public class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener { JTable table; JButton renderButton; JButton editButton; String text; public ButtonColumn(JTable table, int column) { super(); this.table = table; renderButton = new JButton(); editButton = new JButton(); editButton.setFocusPainted( false ); editButton.addActionListener( this ); TableColumnModel columnModel = table.getColumnModel(); columnModel.getColumn(column).setCellRenderer( this ); columnModel.getColumn(column).setCellEditor( this ); } public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (hasFocus) { renderButton.setForeground(table.getForeground()); renderButton.setBackground(UIManager.getColor("Button.background")); } else if (isSelected) { renderButton.setForeground(table.getSelectionForeground()); renderButton.setBackground(table.getSelectionBackground()); } else { renderButton.setForeground(table.getForeground()); renderButton.setBackground(UIManager.getColor("Button.background")); } renderButton.setText( (value == null) ? "" : value.toString() ); return renderButton; } @Override public Component getTableCellEditorComponent( JTable table, Object value, boolean isSelected, int row, int column) { text = (value == null) ? "" : value.toString(); editButton.setText( text ); return editButton; } @Override public Object getCellEditorValue() { return text; } @Override public void actionPerformed(ActionEvent e) { fireEditingStopped(); System.out.println( e.getActionCommand() + " : " + table.getSelectedRow()); } } TesteBean.java public class TesteBean { private int cod; private int codOrig; public TesteBean() { } public TesteBean(int cod, int codOrig) { this.setCod(cod); this.setCodOrig(codOrig); } public int getCod() { return cod; } public void setCod(int cod) { this.cod = cod; } public int getCodOrig() { return codOrig; } public void setCodOrig(int codOrig) { this.codOrig = codOrig; } } Agradeço desde ja. Abraço
  3. Bom dia, tudo bem ? Tenho uma duvida relacionado a passar dados via construtor entre 2 jDialog (PesquisaPessoa, Venda) O codigo faz os seguintes passos: 1 - Eu tenho meu jDialog Venda que chama o jDialog PesquisaPessoa 2 - No PesquisaPessoa eu pego todos os dados da linha selecionada do meu jTable e passo para um ArrayList ao pressionar o botão ok 3 - No construtor do Venda eu pego esse ArrayList e quero setar os dados em um jTextField na tela Venda ja criado meu código esta o seguinte // VENDA public Venda(java.awt.Frame parent, boolean modal, ArrayList<String> listaVenda) { super(parent, modal); initComponents(); this.listaVenda = listaVenda; String id = listaVenda.get(0); String nome = listaVenda.get(1); jTextFieldCliente.setText(id); jLabelNomeCliente.setText(nome); } // PESQUISAPESSOA private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) { // Pego a linha da tabela (Estou usando abstract) jTablePesPessoa.getSelectedRow(); // Criei um Vetor para guardar os dados Vector<Object> linha = new Vector<Object>(); // Salvo no vetor for(int i=0; i<jTablePesPessoa.getColumnCount(); i++){ linha.addElement( jTablePesPessoa.getValueAt( jTablePesPessoa.getSelectedRow(),i)); } // O metodo VetorPataStr serve para mudar todos os dados para uma arrayList de String // Chamo o contrutor de Venda vd = new Venda(null, true, pc.vetorParaStr(linha)); vd.setVisible(true); } Quando eu chamo "vd.setVisible(true);" ele cria uma outra tela do jeitinho que eu quero. Porem eu não gostaria que criasse uma outra tela. E sim usasse a tela que ja foi chamada antes. Estou tentando fazer o seguinte.. Quando clico em ok a tela PesquisaPessoa some e insere os dados na tela Venda anterior. Obrigado desde ja.
×
×
  • Criar Novo...