Ich verwende Webview in JavaFx und in meiner App habe ich mehrere Panels, auf denen ich ein Browserfenster einbetten möchte. Ich kämpfe mit dem objektorientierten Bit. Kannst du sehen, was ich anders machen muss?Übergabe von Objekten an eine Klasse in Java
In meinem Hauptprogramm habe ich dies für einen Panel:
JPanel jPanel = new JPanel(new BorderLayout());
browser browser = new browser(jPanel);
browser.setVisible(true);
browser.loadURL("http://www.google.com");
ich einen roten Unterstrich in der zweiten Zeile.
In meinem Browser Klasse:
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;
}
}
}
ich einen roten Unterstrich, wo es Gegenstand sagt und wo immer auch sagt, es Panel.
Ich sehe Sie nichts mit dem Parameter in Ihrem Konstruktor tun, und ich bin ziemlich sicher, dass Objekt in Java groß geschrieben wird. –
Großbuchstaben 'Objekt'. Außerdem hat es keinen Sinn, diesen Parameter im Konstruktor zu haben, wenn Sie ihn nicht benutzen. Sie werden nie einer anderen Variablen zugewiesen. Und Sie möchten wahrscheinlich einen expliziteren Typ als 'java.lang.Object'. –
Was ist 'Objekt' und warum übergeben Sie es an den Konstruktor. Wenn Sie ein Objekt wie "Superklasse aller Klassen" -Objekt verwenden möchten, ist es in Großbuchstaben: 'Objekt' – fabian