Então galera, eu criei um um código que ele vai gerar um Botão com o Nome digitado em um JtextField
gostaria de saber como posso está removendo alguns dos botões desejados, ja que é possivel criar acredito que a uma forma de deletar,
intbtnPorLinhaLanche=800/(200+5);intlinhaAtualLanche=(++quantJbLanche)/btnPorLinhaLanche;intlocalAtualLanche=quantJbLanche%btnPorLinhaLanche;// Adicionando botãoJButtonnewbtnlanche=newJButton(NomeLanche);//Largura e Altura do botão (Tamanho)newbtnlanche.setSize(140,140);newbtnlanche.setLocation(10+((200+10)*localAtualLanche),10+((40+140)*linhaAtualLanche));newbtnlanche.addActionListener(btnCLickLanche);Dimensiondlanche=newDimension(800,10+((160+66)*linhaAtualLanche)-55);jifpedidos.jdplanche.setPreferredSize(dlanche);jifpedidos.jdplanche.setSize(dlanche);jifpedidos.jdplanche.add(newbtnlanche);
Assim como o método add adiciona, utilize o remove para remover.
F
Fernando_Dos_Santos
jdplanche.remove(newbtnlanche);
eu ja havia tentado antes, mas a a variavel “newbtnlanche” não é reconhecida pelo método
R
rodriguesabner
Se vc quer excluir esse novo botão em um método diferente, newbtnlanche tem que ser uma variavel estática/global pra depois ser removida pelo jdplanche.remove(...);
F
Fernando_Dos_Santos
Consegui cara, mas agr, como posso especificar o botão que eu quero remover? já que quando eu coloco
jdplanche.remove(newbtnlanche);
ele elimina o ultimo botão criado mas não elimina os antecessores.
R
Solucao aceita
rodriguesabner
Cara, depende de como vc ta fazendo o delete, de onde clica pra deletar, se o botão tem algum indice especifico e etc…
removerBotao(nomeBotao);//aí vc aplica como vai querer//e consegue remover dinamicamente
F
Fernando_Dos_Santos1 like
Conseguir resolver essa questão, usando arrey, agora cada botão sera uma variavel , jaja coloco o codigo aqui
F
Fernando_Dos_Santos
Como dito, eis o código comentado
publicclassjifcadlancheextendsjavax.swing.JInternalFrame{// Codigo do Botão lancheintcod;intX=0;// Contador para gerar numero codigo da variavel dos botoes intcont=1;// Ação dos botoes publicstaticActionListenerbtnCLickBebida=null;publicstaticActionListenerbtnCLickLanche=null;publicstaticActionListenerbtnCLickSobremesa=null;//Array dos botões lancheJButtonnewbtnlanche[]=newJButton[999999];privatestaticjifcadlanchejifcadLanche;// Método que remove botãopublicvoidremoverBotao(JButtonbutton){jdplanche.remove(button);}// Instanciando o JinternalFrame de Cadastro de lanche publicstaticjifcadlanchegetInstancia(){if(jifcadLanche==null){jifcadLanche=newjifcadlanche();}returnjifcadLanche;}}// Ação do botão adicionar privatevoidjbadicionarActionPerformed(java.awt.event.ActionEventevt){// Recebendo valores Nome e valor do lancheStringNomeLanche=jtnome.getText();StringValorLanche=jftvalor.getText();//Abas das categoria de lanches (Lanches, Bebidas, Sobremesa)intCategoria=jcbcategoria.getSelectedIndex();//Se nome lanche if(NomeLanche.equals("")){}else{if(ValorLanche.equals("")){}else{// Codigo que será inserido na tabela de cadastro de lancheX=X+1;// Contador que gera um "Código"StringCodigoLanche=String.valueOf(X);// Convertendo um INTEIRO para STRINGS//Ação que ao clicar no botão especifico do lanche ira adicionar na Comanda btnCLickLanche=newActionListener(){@OverridepublicvoidactionPerformed(ActionEventevt1){DefaultTableModelvall=(DefaultTableModel)jtblanche.getModel();vall.addRow(newString[]{CodigoLanche,NomeLanche,ValorLanche});}};//Listando na tabelaDefaultTableModelval=(DefaultTableModel)jtbaddlanche.getModel();val.addRow(newString[]{CodigoLanche,NomeLanche,ValorLanche});//--------------------------------------\\//Categoria Lanchesif(Categoria==0){// Adicionando botãonewbtnlanche[cont]=newJButton(NomeLanche);//Largura e Altura do botão (Tamanho)newbtnlanche[cont].setPreferredSize(newDimension(140,140));//Fonte e tamanho do botãonewbtnlanche[cont].setFont(newjava.awt.Font("Arial",0,16));// NOI18N// Gerenciador de Layout que organiza automaticamente aonde os botoes é inserido jdplanche.setLayout(newFlowLayout(FlowLayout.LEADING,50,50));// Dando a aação ao botãonewbtnlanche[cont].addActionListener(btnCLickLanche);// Adicionando o botão ao JDesktopPane = jdplanchejifpedidos.jdplanche.add(newbtnlanche[cont]);//contador que gera os numeros finais de cada variavel criadacont=cont+1;}}// Ação do botão removerprivatevoidjbremoverActionPerformed(java.awt.event.ActionEventevt){//Chamando método que remove botão, "newbtnlanche" variavel dos botoes mais "cod" que diz quais dos botoes do arrey sera apagadoremoverBotao(newbtnlanche[cod]);//Removendo da tabela a informação relacionado ao botão removido((DefaultTableModel)jtbaddlanche.getModel()).removeRow(jtbaddlanche.getSelectedRow());}//ação do de quando mouse é clicado na tabelaprivatevoidjtbaddlancheMouseClicked(java.awt.event.MouseEventevt){//Linha selecionada da tabelaintrow=jtbaddlanche.getSelectedRow();// Obtendo valor da coluna 0 (primeira coluna) da linha selecionada (Row), "getValueAt(row, 0);"Objecto=jtbaddlanche.getValueAt(row,0);cod=Integer.parseInt((String)o);}
L
Lucas_Camara1 like
Só acho que vc poderia substituir esse vetor por uma lista:
List<JButton>botoesLanche=newArrayList<>();
Assim, vc não precisa já alocar memória toda de uma vez para 999999 itens. A lista vai crescendo na medida que vc for adicionando itens nela.
S
staroski
Código postado está incompleto, estes dois métodos private não são chamados em lugar nenhum.
F
Fernando_Dos_Santos
é por que estou fazendo em JFrame e JInternal. ai coloquei os codigos que achei mais relevante
F
Fernando_Dos_Santos
Eu ate tentei aqui, mas não conseguir converter em um arraylist