Member 12010475 Ответов: 1

Проблемы при отображении связанного списка в графическом интерфейсе с использованием java


Я новичок в связанном списке и создаю библиотечную систему инвентаризации со связанным списком в графическом интерфейсе Java. Я предполагал хранить 4 переменные в 1 узле, который является именем, автором, isbn и номером. Я написал код, но почему-то он не был успешно добавлен в список. Когда я пытаюсь показать его, он ничего не показывает. Как я могу решить эту проблему?

Вот мой класс узлов:

public class Node 
{
    String name;
    String author;
    int isbn;
    int number;
    Node next;
    
    Node()
    {
        name = null;
        author = null;
        isbn = 0;
        number = 0;
        next = null;
    }
    
    Node(String name, String author, int isbn, int number, Node next)
    {
        this.name = name;
        this.author = author;
        this.isbn = isbn;
        this.number = number;
        this.next = next;
    }
    
    String getName()
    {
        return name;
    }
    
    String getAuthor()
    {
        return author;
    }
    
    int getisbn()
    {
        return isbn;
    }
    
    int getnumber()
    {
        return number;
    }
    
    Node getNext()
    {
        return next;   
    }
    
    void setNext(Node next)
    {
        this.next=next;
    }
}


Вот мой класс LinkedList:

public class LinkedList
{
    Node node = new Node();
    Node head;
    
    LinkedList()
    {
        head=null;
    }
    
    Node getHead()
    {
        return head;
    }
    
    public void addNode(String name, String author, int isbn, int number)
    {
        Node newNode = new Node(name, author, isbn, number, head);
        head = newNode;
        JOptionPane.showMessageDialog(null,"Book Information has been added to the inventory.");
    }
    
    public String displayNode()
    {
        Node current = head;
        String output = "";
        
        while(current!= null)
        {
            output+="Book Name: "+current.getName()+" Author: "+current.getAuthor()+" ISBN Number: "+current.getisbn()+" Number of copies: "+current.getnumber();
            current=current.getNext();
        }
        
        return(output+"NULL");
    }


Вот мой графический интерфейс Jframe для вставки:

String name;
    String author;
    int isbn;
    int number;
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        name = jTextField2.getText();
        author = jTextField3.getText();
        isbn = Integer.parseInt(jTextField4.getText());
        number = Integer.parseInt(jTextField1.getText());
        LinkedList list = new LinkedList();
        list.addNode(name, author, isbn, number);
    }  


Вот мой графический интерфейс JFrame для отображения:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        LinkedList list = new LinkedList();
        jTextArea1.setText(list.displayNode());
    } </pre>


Пожалуйста, помогите, спасибо.

Что я уже пробовал:

Я пробовал искать в интернете, но ни одно решение не может помочь.
Кроме того, я не знаю, в чем проблема моего кода.

[no name]

"Я еще не знаю, в чем проблема моего кода", научитесь пользоваться отладчиком, и тогда вы все узнаете.

Member 12010475

Я использовал, но он ничего не показывает.

[no name]

Тогда вы действительно должны научиться использовать отладчик.

1 Ответов

Рейтинг:
2

Richard MacCutchan

В вашем jButton1ActionPerformed рутину вы создаете новую LinkedList и добавьте к нему узел. Затем вы выходите из этой процедуры,и список удаляется. В следующий раз вы сделаете то же самое, так что все ваши узлы и списки будут выброшены. И в вашей рутине отображения вы делаете то же самое снова: создаете новый список и пытаетесь прочитать узлы в нем, но новый список будет пуст. Вы должны создать новый LinkedList объект в вашем основном классе и всегда ссылаться на него.

Я также замечаю, что обе ваши графические подпрограммы имеют имена jButton1ActionPerformed что является очень плохой идеей и неизбежно вызовет путаницу. Вы также должны давать своим компонентам значимые имена, а не значения по умолчанию.