cannot instantiate type actionlistener?

14,201

Solution 1

If your trying to use an anonymous inner class, it should look like that:

yourInputField.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
             JTextField textfield = (JTextField)evt.getSource();
                         process(textfield.getText());
        }
    });

But if you want to use a nested class it can look like this:

yourInputField.addActionListener(new MyActionListener());

and then somewhere out of the method you declare the nested class:

      private class MyActionListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            TextField textfield = (JTextField)evt.getSource();
                             process(textfield.getText());
        }
    }

Solution 2

ActionListener is an interface not a class, and you can not instantiate interfaces.

Replace:

yourInputField.addActionListener(new ActionListener());

with:

yourInputField.addActionListener(new MyActionListener());
Share:
14,201
jasper
Author by

jasper

Updated on June 04, 2022

Comments

  • jasper
    jasper almost 2 years
    import org.jsoup.Jsoup;
    
    @SuppressWarnings("unused")
    
    public class SimpleWebCrawler extends JFrame implements ActionListener {
    
        JTextField yourInputField = new JTextField(20);
        static JTextArea _resultArea = new JTextArea(200, 200);
        JScrollPane scrollingArea = new JScrollPane(_resultArea);
        private final static String newline = "\n";
        JButton jButton = new JButton("Send Text");
    
        public SimpleWebCrawler() throws MalformedURLException  {
    
            yourInputField.addActionListener(new ActionListener());
    
            class MyActionListener implements ActionListener {
                public void actionPerformed(ActionEvent evt) {
                    JTextField textfield = (JTextField)evt.getSource();
                    process(textfield.getText());
                }
            }
    
            String word2 = yourInputField.getText();
    
            _resultArea.setEditable(false);
    
            try {
                URL my_url = new URL("http://" + word2 + "/");
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        my_url.openStream()));
                String strTemp = "";
                while (null != (strTemp = br.readLine())) {
                    _resultArea.append(strTemp + newline);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    
            _resultArea.append("\n");
            _resultArea.append("\n");
            _resultArea.append("\n");
    
    
            String url = "http://" + word2 + "/";
            print("Fetching %s...", url);
    
            try{
            Document doc = Jsoup.connect(url).get();
            Elements links = doc.select("a[href]");
    
            System.out.println("\n");
    
            BufferedWriter bw = new BufferedWriter(new 
                    FileWriter("C:\\Users\\user\\fypworkspace\\FYP\\Link\\abc.txt"));
            _resultArea.append("\n");
            for (Element link : links) {
                print("  %s  ", link.attr("abs:href"), trim(link.text(), 35));
    
                bw.write(link.attr("abs:href"));
                bw.write(System.getProperty("line.separator"));
            }
            bw.flush();
            bw.close();
            } catch (IOException e1) {
    
            }
            JPanel content = new JPanel();
            content.setLayout(new BorderLayout());
            content.add(scrollingArea, BorderLayout.CENTER);
            content.add(yourInputField,BorderLayout.SOUTH);
            content.add(jButton, BorderLayout.EAST);
    
            this.setContentPane(content);
            this.setTitle("Crawled Links");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.pack();
    
    
            }
    
            private static void print(String msg, Object... args) {
    
                _resultArea.append(String.format(msg, args) +newline);
            }
    
            private static String trim(String s, int width) {
                if (s.length() > width)
                    return s.substring(0, width - 1) + ".";
                else
                    return s;
            }
    
            //.. Get the content pane, set layout, add to center
    
    
    
    
        public static void main(String[] args) throws IOException {
    
            JFrame win = new SimpleWebCrawler();
            win.setVisible(true);
    
        }
    }
    

    I got this error cannot instantiate type actionlistener. The line of code is :

    yourInputField.addActionListener(new ActionListener());
    
            class MyActionListener implements ActionListener {
                public void actionPerformed(ActionEvent evt) {
                    JTextField textfield = (JTextField)evt.getSource();
                    process(textfield.getText());
                }
            }
    

    I am trying to create a JTextField to receive input from the user. Still unsuccessful. WHat has caused the error ?