2016-03-26 419 views
0

我在使用JavaFx和我的應用程序中使用webview我有幾個面板,我想嵌入瀏覽器窗口。我正在苦於面向對象的位。你能看到我需要做不同的事情嗎?將對象傳遞給java中的類

在我的主要程序我有這樣一個小組:

  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; 
     } 
    } 


} 

我得到一個紅色下劃線,它說對象,也無論它說面板。

+0

我沒有看到你在構造函數中對參數做任何事情,而且我很確定java中的Object是大寫的。 –

+0

大寫'對象'。另外,當你不使用它時,在構造函數中有沒有這個參數是沒有意義的?你永遠不會分配給另一個變量。你可能想要一個比java.lang.Object更明確的類型。 –

+0

什麼是「對象」,爲什麼你將它傳遞給構造函數。如果你想使用像「所有類的超類」對象的對象,它是大寫:'對象' – fabian

回答

0
public browser(object panel) 

你的可變panel很可能是一個對象,但類對象被定義爲Object,不object。引起「紅線」A.K.A.編譯器錯誤。

您也在面板上得到編譯器錯誤的原因是因爲它們在其他方法中不可見。您將對象panel傳遞給構造函數,但它永遠不會在類中設置。例如。使類級變量如:

private Object panel; 
public browser(Object panel) { 
    super(); 
    initComponents(); 
    this.panel = panel; 
} 

這將允許您的面板對象在整個班級中看到。

+0

感謝您的幫助。這設法完成了工作。如果我能像我一樣給每個人一個像。 – kev002