Witam,
Mam takie zadanie:

Napisz program wyświetlający listę (obiekt klasy JList „zanurzony” w obiekcie JScrollPane) oraz, poniżej, pole tekstowe ( JTextField).
Użytkownik może wpisać w polu tekstowym:

add słowo: wpisane słowo pojawia się na liście, jeśli go tam nie ma; jeśli zaś jest, to pojawia się stosowny komunikat i słowo to nie jest dodawane;

del słowo: wpisane słowo znika z listy, jeśli tam jest; jeśli zaś go nie ma, to pojawia się stosowny komunikat;

quit: oznacza wyjście z programu.

Użyj własnek klasy dziedziczącej z klasy AbstractListModel odpowiednio implementującej metody abstrakcyjne getElementAt i getSize oraz wyposażonej w metody do dodawania i usuwania elementów listy (należy w nich wywołać fireIntervalAdded i fireIntervalRemoved).

Napisałem coś takiego /

 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Main extends AbstractListModel implements ActionListener {

	// Zmienne

	JFrame okno;
	JPanel panel;
	JTextArea area;
	JTextField field;
	JScrollPane scroll;
	JList list;
	DefaultListModel model;

	public void make() {
		// Lista

		model = new DefaultListModel();
		list = new JList(model);

		// Area

		area = new JTextArea();
		scroll = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
				JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		area.setEditable(false);
		area.setPreferredSize(new Dimension(250, 200));

		// Field

		(field = new JTextField()).addActionListener(this);
		field.setPreferredSize(new Dimension(250, 20));

		// Frame

		panel = new JPanel();
		panel.setLayout(new BorderLayout());
		panel.add(scroll, BorderLayout.CENTER);
		panel.add(field, BorderLayout.SOUTH);

		// Panel

		okno = new JFrame("LIST");
		okno.add(panel);
		okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		okno.pack();
		okno.setVisible(true);

	}

	// Zdarzenia

	@Override
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();

		if (source == field) {
			if (!field.getText().equals("")) {
				if (field.getText().startsWith("add ")) {
					model.addElement(field.getText().substring(4));
					field.setText(null);
				}
				if (field.getText().startsWith("del ")) {
					model.removeElement(field.getText().substring(4));
					field.setText(null);
				}
				if (field.getText().equals("quit"))
					okno.dispose();
				else
					field.setText(null);
			}
		}
	}

	// Konstruktor

	public Main() {
		make();
	}

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

	}

	@Override
	public Object getElementAt(int index) {
		return model.get(index);
	}

	@Override
	public int getSize() {
		return model.getSize();
	}

	public void addElement(Object element) {
		model.addElement(element);
		fireIntervalAdded(this, model.getSize(), model.getSize());
	}

}
 

I teraz pytanie :)
Co mają zrobić te polecenia fireIntervalAdded i fireIntervalRemoved (Patrzyłem w dokumentacji ale nie za bardzo rozumiem)?? Według mnie to jest nie potrzebne... metoda addElement jest poprawna(Aktualnie jeszcze nie jest wykorzystywana oczywiście)?

Proszę o pomoc ...

PS.
Mile widziane podpowiedzi do poprawienia mojego stylu pisania kodu ... Jestem początkującym programistą i będę wdzięczny za opinie bardziej doświadczonych:D