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