import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.AbstractListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class Liste implements ActionListener { JList liste; JTextField eingabe; JLabel einLabel; JPanel einPanel, buttPanel; JButton changeButt, addButt, deleteButt; JListModel model = new JListModel(); public Liste() { initGUI(); } private void initGUI() { JFrame frame = new JFrame("Liste"); einLabel = new JLabel("eingabe:"); eingabe = new JTextField(); einPanel = new JPanel(new GridLayout(1, 2)); einPanel.add(einLabel); einPanel.add(eingabe); changeButt = new JButton("\u00E4ndern"); changeButt.addActionListener(this); addButt = new JButton("hinzuf\u00FCgen"); addButt.addActionListener(this); deleteButt = new JButton("l\u00F6schen"); deleteButt.addActionListener(this); buttPanel = new JPanel(new GridLayout(1, 3)); buttPanel.add(changeButt); buttPanel.add(addButt); buttPanel.add(deleteButt); liste = new JList(model); JScrollPane sp = new JScrollPane(liste); frame.getContentPane().add(einPanel, BorderLayout.NORTH); frame.getContentPane().add(sp, BorderLayout.CENTER); frame.getContentPane().add(buttPanel, BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); frame.setLocation(100, 100); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new Liste()); } public void actionPerformed(ActionEvent e) { String txt = eingabe.getText(); if (!txt.equals("") && !txt.startsWith(" ")) { if (e.getSource() == addButt) model.addElement(txt); if (e.getSource() == changeButt) model.setElement(txt, liste.getSelectedIndex()); } if (e.getSource() == deleteButt) model.removeElement(liste.getSelectedIndex()); } } class JListModel extends AbstractListModel { private static final long serialVersionUID = 1L; private ArrayList data; public JListModel() { data = new ArrayList(); data.add("eins"); data.add("zwei"); data.add("drei"); data.add("vier"); } public int getSize() { return data.size(); } public Object getElementAt(int index) { return data.get(index); } public Object getIndex(Object o) { return data.indexOf(o); } public void setElement(String s, int index) { data.set(index, s); update(0, this.getSize()); } public void addElement(String s) { data.add(s); update(this.getSize() - 1, this.getSize()); } public void removeElement(int index){ data.remove(index); update(0, this.getSize()); } public void update(int von, int bis) { fireIntervalAdded(this, von, bis); } }