Мой способ загрузить HTML из URL-адреса в веб-браузере не работает

1

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

import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
import java.applet.*;

public class browserPannel extends JFrame{

    public static void main(String[] arg) {
        JFrame browser = new JFrame("A Nun In A Weelchair");
        browser.setSize(1000,700);
        browser.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        browser.setLocationRelativeTo(null);

        JPanel header = new JPanel();
        header.setBackground(Color.lightGray);

        JTextField url = new JTextField(20);
        url.addActionListener(
            new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    //loadHtml(event.getActionCommand);
                    System.out.println("action performed");
                }
            }
            );
        url.setSize(890,30);
        url.setVisible(true);

        JButton send = new JButton("Send");
        send.setSize(75,30);
        send.setVisible(true);

        JEditorPane htmlc = new JEditorPane();
        htmlc.setBackground(Color.red);
        htmlc.setEditable(true);
        htmlc.setContentType("text/html");


        header.add(url, BorderLayout.SOUTH);
        header.add(send);
        browser.getContentPane().add(header, BorderLayout.NORTH);
        browser.getContentPane().add(new JScrollPane(htmlc));


        browser.pack();
        browser.setVisible(true);
    }

    private void loadHtml(String link)
    {
        try{
            //htmlc.setPage(link);
            //url.setText(link);
        }catch(Exception e){
            System.out.println("ops sorry could not fined Virgine Mobile");
        }
    }

}

из того, что я могу сказать, похоже, что он не может распознать url и htmlc

Я попытался прокомментировать htmlc.setPage и url.setText, и когда я делаю это, моя программа компилируется. почему я получаю эти ошибки, не следует ли признать, что они определены выше?

  • 0
    Что такое трассировка стека исключений?
  • 0
    если URL-адрес является вторженным URL-адресом, то он отображает, что находится под catch иначе программа вылетает
Показать ещё 1 комментарий
Теги:
browser

1 ответ

0
Лучший ответ

Ваш метод не является static но вы пытаетесь вызвать его из static контекста (main()). Кроме того, ваши экземпляры в методе main() не видны в loadHtml(). Вы можете передать их в метод (или объявить их как static поля в своем классе). Наконец, вы не должны проглатывать Exception (по крайней мере printStackTrace()). Поэтому я думаю, что вы искали что-то вроде,

private static void loadHtml(JEditorPane htmlc, JTextField url, String link) {
    try{
        htmlc.setPage(link);
        url.setText(link);
    }catch(Exception e){
        System.out.println("ops sorry could not find Virgin Mobile");
        e.printStackTrace();
    }
}

Кроме того, loadHtml(event.getActionCommand); неверно. Вам понадобится скобка для вызова исходного метода loadHtml(event.getActionCommand()); , но с вышеуказанными изменениями это будет loadHtml(htmlc, url, event.getActionCommand()); (и для использования htmlc и url в вашем внутреннем классе вы должны объявить эти ссылки final. Например, final JTextField url = new JTextField(20);).

В качестве альтернативы вы можете сделать компоненты static чтобы они были доступны для всех экземпляров (и методы - сначала прокомментируйте их в своем main методе) -

private static final JTextField url = new JTextField(20);
private static final JEditorPane htmlc = new JEditorPane();
private static void loadHtml(String link) {
    try{
        htmlc.setPage(link);
        url.setText(link);
    }catch(Exception e){
        System.out.println("ops sorry could not find Virgin Mobile");
        e.printStackTrace();
    }
}

Затем вы должны иметь возможность использовать loadHtml(event.getActionCommand())

  • 0
    Тоже не сработает. htmlc и url не являются полями. Они локальны для основного метода.
  • 1
    Тот факт, что кто-то проголосовал за это, возмутительно.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню