Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我从web浏览器中的url加载html的方法不起作用_Java_Browser - Fatal编程技术网

Java 我从web浏览器中的url加载html的方法不起作用

Java 我从web浏览器中的url加载html的方法不起作用,java,browser,Java,Browser,我试着制作一个web浏览器来取乐,当我输入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(Strin

我试着制作一个web浏览器来取乐,当我输入
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
进行注释,当我这样做时,我的程序会编译。
为什么我会遇到这些错误,难道它不知道它们是上面定义的吗?

您的方法不是
静态的
,但是您试图从
静态的
上下文(
main()
)调用它。另外,
main()
方法中的实例在
loadHtml()
方法中不可见。您可以将它们传递到方法中(或者将它们声明为类中的
static
字段)。最后,您不应该接受
异常
(至少
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);

或者,您可以使组件
成为静态的
,以便在所有实例中共享它们(和方法-首先在
main
方法中注释它们)-


然后,您应该能够使用
loadHtml(event.getActionCommand())

异常堆栈跟踪是什么?如果url是无效的url,则它会显示
catch
下的内容,否则程序会崩溃。变量htmlc或url都不在loadHtml()方法的范围内定义。这就是编译代码时出现错误的原因。它们当前仅在main()方法中定义。也不起作用。htmlc和url不是字段。它们是main方法的本地项。有人否决了这一点,这一事实是不可容忍的。@Julien当我说“或将它们声明为
静态
字段”时,我并没有说它们是当前字段。事实上,我的意思恰恰相反。我想您会发现
main()
方法中的实例在
loadHtml()中不可见,这是我发现的问题actionListener
下的code>因为一次处理一个错误而被注释掉,当我取消注释它时,它告诉我它不能定义变量
getActionCommand
,它还告诉我它不能实现
actionPerformed
@yoseph1998
loadHtml(htmlc,url,event.getActionCommand())
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();
    }
}