public GuiApplication() {
        // give every JList a ListModel
        list1Model = new DefaultListModel<>();
        list1.setModel(list1Model);

        list2Model = new DefaultListModel<>();
        list2.setModel(list2Model);

        list3Model = new DefaultListModel<>();
        list3.setModel(list3Model);

        // click the start-button
        startButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                startButton.setEnabled(false);
                urlTextField.setEnabled(false);
                crawlingLabel.setText("Starting...");
                list1Model.clear();
                list2Model.clear();
                list3Model.clear();

                new Thread(){
                    public void run() {
                        crawler = new WebCrawler(urlTextField.getText().trim(), GuiApplication.this);
                        crawler.start();
                    }
                }.start();
            }
        });

        // double-click an JList-entry
        list1.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                if (evt.getClickCount() != 2) return;
                if (!Desktop.isDesktopSupported()) return;
                try {
                    JList list = (JList)evt.getSource();
                    String url = (String)list.getModel().getElementAt(list.locationToIndex(evt.getPoint()));
                    Desktop.getDesktop().browse(new URI(url.substring(6)));
                } catch (IOException | URISyntaxException ignored) {
                }
            }
        });
        list2.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                if (evt.getClickCount() != 2) return;
                if (!Desktop.isDesktopSupported()) return;
                try {
                    JList list = (JList)evt.getSource();
                    String url = (String)list.getModel().getElementAt(list.locationToIndex(evt.getPoint()));
                    Desktop.getDesktop().browse(new URI(url.substring(6)));
                } catch (IOException | URISyntaxException ignored) {
                }
            }
        });
        list3.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                if (evt.getClickCount() != 2) return;
                if (!Desktop.isDesktopSupported()) return;
                try {
                    JList list = (JList)evt.getSource();
                    String url = (String)list.getModel().getElementAt(list.locationToIndex(evt.getPoint()));
                    Desktop.getDesktop().browse(new URI(url.substring(6)));
                } catch (IOException | URISyntaxException ignored) {
                }
            }
        });
    }