2016-03-26 10 views
0

私はJavaFxでwebviewを使用しています。私のアプリケーションでは、ブラウザウィンドウを埋め込むパネルがいくつかあります。私はオブジェクト指向のビットで苦労しています。あなたは私が違うやり方をする必要があるのか​​分かりますか?Javaのクラスにオブジェクトを渡す

1枚のパネルのために、私はこれを持って私のメインプログラムで

:私は2番目の行に赤い下線を取得

  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

'オブジェクト'とは何ですか?なぜそれをコンストラクタに渡しますか? "すべてのクラスのスーパークラス"オブジェクトのようなオブジェクトを使用したい場合は、大文字です: 'Object' – 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

関連する問題