在java中将对象传递给类
我在JavaFx中使用webview,在我的应用程序中,我有几个面板,我想在这些面板上嵌入一个浏览器窗口。我正在努力解决面向对象的问题。你能看出我需要做什么不同吗 在我的主程序中,我有一个面板:在java中将对象传递给类,java,oop,javafx,webview,Java,Oop,Javafx,Webview,我在JavaFx中使用webview,在我的应用程序中,我有几个面板,我想在这些面板上嵌入一个浏览器窗口。我正在努力解决面向对象的问题。你能看出我需要做什么不同吗 在我的主程序中,我有一个面板: JPanel jPanel = new JPanel(new BorderLayout()); browser browser = new browser(jPanel); browser.setVisible(true);
JPanel jPanel = new JPanel(new BorderLayout());
browser browser = new browser(jPanel);
browser.setVisible(true);
browser.loadURL("http://www.google.com");
我在第二行有一条红色下划线
在我的浏览器类中:
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javax.swing.*;
import java.awt.*;
import java.net.MalformedURLException;
import java.net.URL;
public class browser extends JFrame {
private final JFXPanel jfxPanel = new JFXPanel();
private WebEngine engine;
//private final JPanel panel = new JPanel(new BorderLayout());
public browser(object panel) {
super();
initComponents();
}
private void initComponents() {
createScene();
panel.add(jfxPanel, BorderLayout.CENTER);
getContentPane().add(panel);
setPreferredSize(new Dimension(1024, 600));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
}
private void createScene() {
Platform.runLater(new Runnable() {
@Override
public void run() {
WebView view = new WebView();
engine = view.getEngine();
jfxPanel.setScene(new Scene(view));
}
});
}
public void loadURL(final String url) {
Platform.runLater(new Runnable() {
@Override
public void run() {
String tmp = toURL(url);
if (tmp == null) {
tmp = toURL("http://" + url);
}
engine.load(tmp);
}
});
}
private static String toURL(String str) {
try {
return new URL(str).toExternalForm();
} catch (MalformedURLException exception) {
return null;
}
}
}
我得到了一个红色下划线,它说的对象,也说的面板
public browser(object panel)
变量面板
很可能是一个对象,但类对象被定义为对象
,而不是对象
。导致“红线”的,也称为编译器错误
面板上出现编译器错误的原因是,它们在其他方法中不可见。您将对象面板
传递到构造函数中,但它从未在类中设置。例如,制作一个类范围的变量,如:
private Object panel;
public browser(Object panel) {
super();
initComponents();
this.panel = panel;
}
这将允许在整个类中看到您的面板对象。我看不到您对构造函数中的参数做任何操作,而且我非常确定java中的对象是大写的。大写
对象
。而且,当您不使用该参数时,在构造函数中包含该参数是没有意义的?您从未分配给另一个变量。您可能需要比java.lang.Object
更显式的类型。什么是Object
,为什么要将它传递给构造函数。如果您想使用像“所有类的超类”这样的对象,它的大写形式是:object
谢谢您的帮助。这项工作终于完成了。如果我能像我一样给每个人一个机会。