我正在尝试制作网络浏览器,这是我的代码
CODE:
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);
browser.pack();
browser.setVisible(true);
JPanel header = new JPanel();
header.setBackground(Color.lightGray);
header.setVisible(true);
final JEditorPane htmlc = new JEditorPane();
htmlc.setBackground(Color.red);
htmlc.setEditable(true);
htmlc.setContentType("text/html");
htmlc.setVisible(true);
final JTextField url = new JTextField(20);
url.setSize(890,30);
url.setVisible(true);
url.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
loadHtml(htmlc, url, event.getActionCommand());
System.out.println("action performed");
}
}
);
JButton send = new JButton("Send");
send.setSize(75,30);
send.setVisible(true);
header.add(url, BorderLayout.SOUTH);
header.add(send);
browser.getContentPane().add(header, BorderLayout.NORTH);
browser.getContentPane().add(new JScrollPane(htmlc));
}
private 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 fined Virgine Mobile");
e.printStackTrace();
}
}
}
这是我的错误消息:
browserPannel.java:38: error: non-static method loadHtml(JEditorPane,JTextField,
String) cannot be referenced from a static context
loadHtml(htmlc, url, event.getActionComm
and());
^
1 error
你可以告诉它是从我的代码的一个方法中的方法中定义的loadHtml中获取错误,现在如果我删除了loadHtml,那么它会显示println(“action performed”);但是只有当我引用loadHtml它说非静态方法不能在静态方法中执行。
答案 0 :(得分:0)
正确。您需要类browserPannel
的实例来调用该方法,
browserPannel bp = new browserPannel();
bp.loadHtml(htmlc, url, event.getActionCommand());
或者你可以制作
private void loadHtml(JEditorPane htmlc, JTextField url, String link)
static
,如
private static void loadHtml(JEditorPane htmlc, JTextField url, String link)
修改强>
此外,Java驼峰案例约定会命名您的类BrowserPanel
(我建议您遵循该约定)。
答案 1 :(得分:0)
正如您从main方法中调用“loadHtml”,您必须执行以下任一操作: -
1)使用browserPannel
类的对象来调用loadHtml或
2)你需要loadHtml方法是静态的
记住规则static and within the same class can be directly called from main method
喝彩!