Não consigo Verificar um nome dentro de uma lista

5 respostas
programaçãojava
J

Se alguém puder me ajudar agradeço.
Estou tentando criar uma agenda telefônica para aprendizado próprio, porém não estou conseguindo achar um jeito de arrumar o código, não sei se isto é impossível, por que estou usando um JTextField pra fazer uma verificação com IF, tentei transformar o objeto do JTextField em boolean, mas mesmo assim não caia na decisão True que era pra mostrar na tela que já existe aquele nome.

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.util.ArrayList;

import javax.swing.*;

public class Agenda extends JFrame {

ArrayList <String> Pessoa = new ArrayList<>();

public Agenda(){
    
    //Nome que irá aparecer na janela
    super ("Agenda");
    //Cria o painel
    JPanel p1 = new JPanel(null);
    //Cria os textos que iram aparecer na janela
    JLabel lTitulo = new JLabel("Agenda de contatos");
    JLabel lNome = new JLabel("Nome:");
    JLabel lTelefone = new JLabel("Telefone:");
    //Cria os botões com os nome deles.
    JButton bGravar = new JButton("Gravar");
    JButton bDeletar = new JButton("Deletar");
    JButton bProcurar = new JButton("Procurar");
    JButton bSair = new JButton("Sair");
    
    //Cria o campo de texto para ser preenchido
    JTextField tNome = new JTextField(20);
    JTextField tTelefone = new JTextField(20);
    //É um modelo padrao da lista
    DefaultListModel modelo = new DefaultListModel();
    //Cria uma lista onde pode adicionar os contatos e telefone
    JList lista = new JList();
    //Cria uma "tela" com scroll dependendo da quantidade da lista
    JScrollPane scroll = new JScrollPane(lista);
    
    //Coloca um tipo de fonte com o tamanho da letra
    lTitulo.setFont(new Font("Dialog", Font.PLAIN, 20));

    p1.add(lTitulo);
    p1.add(lNome);
    p1.add(tNome);
    p1.add(lTelefone);
    p1.add(tTelefone);
    p1.add(bGravar);`Texto pré-formatado`
    p1.add(bDeletar);
    p1.add(bProcurar);
    p1.add(bSair);
    p1.add(scroll);

    add(p1);

   lista.setModel(modelo);
   
    //TAMANHO E LOCALIZAÇÃO DOS BOTÕES, LABELS E CAMPO DE TEXTO 
    lTitulo.setBounds(140, 20, 200, 80);
    lNome.setBounds(55, 130, 100, 25);
    tNome.setBounds(100, 130, 350, 25);
    lTelefone.setBounds(40, 180, 100, 25);
    tTelefone.setBounds(100, 180, 350, 25);
    bGravar.setBounds(60, 240, 100, 23);
    bDeletar.setBounds(200, 240, 100, 23);
    bProcurar.setBounds(340, 240, 100, 23);
    bSair.setBounds(200, 320, 100, 23);
    scroll.setBounds(500, 50, 400, 300);

    //TAMANHO DA JANELA INTEIRA
    setSize(1000, 450);
    //QUANDO O USUÁRIO APERTAR O X, O PROGRAMA IRÁ FECHAR
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // A JANELA VAI FICAR VISIVEL 
    setVisible(true);
    //FAZ A JANELA ABRIR NO MEIO DA TELA
    setLocationRelativeTo(null);
    
    boolean verificacao = Boolean.parseBoolean(tNome.getText());
    
    
    //AÇÕES DE BUTÕES
    
    bGravar.addActionListener((ActionEvent e) -> {
        if(verificacao == true){
            JOptionPane.showMessageDialog(null, "Esse nome já existe.");
        }
        else if(verificacao == false){
            modelo.addElement("Nome: " + tNome.getText()+ " - " + "Telefone: " + tTelefone.getText());
        }
    });
    
    bDeletar.addActionListener((ActionEvent e) -> {
        modelo.removeElement(lista);
    });


}

public static void main (String args[]){
    new Agenda();
}

}

5 Respostas

darlan_machado

1- O objeto deJTextField é um objeto de JTextField. Caso se refira ao conteúdo do mesmo, este é um objeto do tipo String. Salvo se o valor inserido no JTextField venha a ser “true” ou “false” (sem as aspas, lógico), jamais será possível converter em um Boolean.

2- Essa verificação aqui

Como explicado no item 1, é totalmente incorreta.
Qual o objetivo dela? Verificar se o nome é um nome que já foi inserido na agenda?
Como pretende fazer isso sem varrer a lista e comparar nome por nome?

3 -

Cara, nomes de atributos/variáveis devem, SEMPRE ser escritos com a primeira letra em minúsculo, exceto as constantes.

4 - Você declara o objeto acima, mas, onde você o utiliza?
Por que insere na tal DefaultListModel e não tenta pesquisar neste objeto mesmo?
Dá uma olhada na =documentação desse cara, em específico os método getSize e get ou getElementAt

Crocodilo

Porque não procura no google , exemplos semelhantes , documentação só é uma referência básica.

Crocodilo

Veja esse site !!!https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/ListDemoProject/src/components/ListDemo.java

darlan_machado

Exatamente, referência básica que lista todos os atributos, métodos e afins de uma classe, como sua estrutura hierárquica e a sua localização dentro do “universo java”.
Mas, se você não gosta dela, não a acha boa o suficiente, faz uma nova.

Crocodilo

Ele perguntou uma coisa, e você lhe forneceu uma bíblia :wink:

Criado 25 de agosto de 2018
Ultima resposta 26 de ago. de 2018
Respostas 5
Participantes 3