不能从主类调用方法?

时间:2014-09-02 02:15:42

标签: java variables

我正在尝试制作网络浏览器,这是我的代码

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它说非静态方法不能在静态方法中执行。

2 个答案:

答案 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

喝彩!