2016-05-29 3 views
0

私はJava Swingマップアプリケーションを開発しています.Ullを取得し、さまざまなズームレベルでGoogleマップからマップを読み込みます。JFXPanelでエッジを取り除く方法は?

地図のアドレスバーは迷惑ですが、私はそれを取り除きたい、またはスペースを減らしたいと思います。

私のコードでは、私は最初に試しました:Use_iFrame_B=false;

これは、このような大きなアドレスバーでマップを取得します、とズームが作動していません。

enter image description here

それから私が試した:Use_iFrame_B=true

これはズームとマップが表示されます

が、持っている大規模なエッジ:

enter image description here

だから、私の質問は以下のとおりです。

  1. ときUse_iFrame_B = falseの、のアドレスバーを非表示にする方法住所に赤い吹き出しが表示されていますか?
  2. 上記の場合にズームを行う方法[Use_iFrame_B = false]。
  3. 上記の1と2を実行できない場合は、iFrameを使用することをお勧めします。これは、意味のあるアドレスが小さく表示され、ズームも機能します。しかし、それは大きなエッジを残して、どのようにそれらのエッジを取り除くときUse_iFrame_B=true?ここで

私のプログラムです:

import java.awt.*; 
import java.io.File; 
import java.net.URL; 

import javafx.embed.swing.JFXPanel; 
import javafx.application.Platform; 
import javafx.collections.ObservableList; 
import javafx.scene.Scene; 
import javafx.scene.layout.*; 
import javafx.scene.web.*; 
import javax.swing.*; 
import javax.swing.border.*; 

/** 
Note using the browser might require setting the properties 
- http.proxyHost 
- http.proxyPort 
e.g. -Dhttp.proxyHost=webcache.mydomain.com -Dhttp.proxyPort=8080 
*/ 

public class JavaFX_Browser_Panel extends JPanel 
{ 
    static int Edge_W=0,Edge_H=0; 
    private int PANEL_WIDTH_INT=1200,PANEL_HEIGHT_INT=900; 
    private JFXPanel browserFxPanel; 
    private Pane browser; 
    WebView view; 
    WebEngine eng; 
// static String Url,Urls[]=new String[]{"http://www.Yahoo.com","www.Google.com","dell.com","C:/Dir_Fit/Yahoo_Maps_Frame.html","C:/Dir_Broadband_TV/TV.html"}; 
// static String Url,Urls[]=new String[]{"C:/Dir_Broadband_TV/TV.html"}; 
// static String Url,Urls[]=new String[]{"http://screen.yahoo.com/cecily-strong-snl-skits/hermes-000000630.html"}; 
    static String Url,Urls[]=new String[]{"https://www.google.com/maps/@33.8470183,-84.3677322,11z"}; 

    public JavaFX_Browser_Panel() { init(); } 

    public JavaFX_Browser_Panel(int W,int H) 
    { 
    PANEL_WIDTH_INT=W+Edge_W; 
    PANEL_HEIGHT_INT=H+Edge_H; 
    init(); 
    } 

    public JavaFX_Browser_Panel(String Url) 
    { 
    this.Url=Url; 
    init(); 
    setURL(Url); 
    } 

    void init() 
    { 
    FlowLayout FL=new FlowLayout(); 
    FL.setHgap(0); 
    FL.setVgap(0); 
    setLayout(FL); 
    browserFxPanel=new JFXPanel(); 
// browserFxPanel.setBorder(new EmptyBorder(0,0,0,0)); 
    add(browserFxPanel); 
    setPreferredSize(new Dimension(PANEL_WIDTH_INT,PANEL_HEIGHT_INT)); 
    Platform.runLater(new Runnable() { public void run() { createScene(); } }); 
    } 

    public static void Set_Edge(int W,int H) 
    { 
    Edge_W=W; 
    Edge_H=H; 
    } 

    public String getURL() { return eng.getLocation(); } 

    public String goBack() 
    {  
    final WebHistory history=eng.getHistory(); 
    ObservableList<WebHistory.Entry> entryList=history.getEntries(); 
    int currentIndex=history.getCurrentIndex(); 
// Out("currentIndex = "+currentIndex); 
// Out(entryList.toString().replace("],","]\n")); 

    Platform.runLater(new Runnable() { public void run() { history.go(-1); } }); 
    return entryList.get(currentIndex>0?currentIndex-1:currentIndex).getUrl(); 
    } 

    public String goForward() 
    {  
    final WebHistory history=eng.getHistory(); 
    ObservableList<WebHistory.Entry> entryList=history.getEntries(); 
    int currentIndex=history.getCurrentIndex(); 
// Out("currentIndex = "+currentIndex); 
// Out(entryList.toString().replace("],","]\n")); 

    Platform.runLater(new Runnable() { public void run() { history.go(1); } }); 
    return entryList.get(currentIndex<entryList.size()-1?currentIndex+1:currentIndex).getUrl(); 
    } 

    public void refresh() { Platform.runLater(new Runnable() { public void run() { eng.reload(); } }); } 

    public void stop() { Platform.runLater(new Runnable() { public void run() { eng.getLoadWorker().cancel(); } }); } 

    public void Load_iFrame(final String Url,final int W,final int H) 
    { 
    Platform.runLater(new Runnable() 
    { 
     public void run() 
     { 

     if (new File(Url).exists()) setURL(new File(Url)); 
     else eng.loadContent("<iframe width="+W+" height="+H+" src="+Url+" style=border:0; marginheight=0 marginwidth=0 allowfullscreen></iframe>"); 
//  else eng.loadContent("<iframe width="+W+" height="+H+" src="+Url+" frameborder=0 marginheight=0 marginwidth=0 allowfullscreen></iframe>"); 
//  else eng.loadContent("<iframe width='990' height='915' src="+Url+" frameborder='0' allowfullscreen></iframe>"); 
     } 
    }); 
    } 

    public void setURL(final String Url) 
    { 
    Platform.runLater(new Runnable() 
    { 
     public void run() 
     { 
     if (new File(Url).exists()) setURL(new File(Url)); 
     else eng.load((Url.startsWith("http://") || Url.startsWith("https://"))?Url:"http://"+Url); 
     } 
    }); 
    } 

    public void setURL(final URL Url) 
    { 
    Platform.runLater(new Runnable() 
    { 
     public void run() 
     { 
     try { eng.load(Url.toString()); } 
     catch (Exception e) { e.printStackTrace(); } 
     } 
    }); 
    } 

    public void setURL(final File file) 
    { 
    Platform.runLater(new Runnable() 
    { 
     public void run() 
     { 
     try { eng.load(file.toURI().toURL().toString()); } 
     catch (Exception e) { e.printStackTrace(); } 
     } 
    }); 
    } 

    private void createScene() 
    { 
    browser=createBrowser(); 
    browserFxPanel.setScene(new Scene(browser)); 
    } 

    private Pane createBrowser() 
    { 
    Double widthDouble=new Integer(PANEL_WIDTH_INT).doubleValue(); 
    Double heightDouble=new Integer(PANEL_HEIGHT_INT).doubleValue(); 
    view=new WebView(); 
    view.setMinSize(widthDouble,heightDouble); 
    view.setPrefSize(widthDouble,heightDouble); 
    eng=view.getEngine(); 
    GridPane grid=new GridPane(); 
    grid.getChildren().addAll(view); 
    return grid; 
    } 

    public static void out(String message) { System.out.print(message); } 
    public static void Out(String message) { System.out.println(message); } 

    public static void main(String[] args) 
    { 
    final JavaFX_Browser_Panel demo=new JavaFX_Browser_Panel(Urls[0]); 

    int i=0; 

    SwingUtilities.invokeLater(new Runnable() 
    { 
     public void run() 
     { 
//  try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } 
//  catch (Exception e) { e.printStackTrace(); } 

     JFrame frame=new JFrame("JavaFX 2.2 in Swing"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.add(demo); 

     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     } 
    }); 

    while (i<Urls.length-1) 
    { 
     try 
     { 
     demo.setURL(Urls[++i]); 
     Thread.sleep(2000); 
     } 
     catch (Exception e) { e.printStackTrace(); } 
    } 
// demo.goBack(); 
    } 
} 


import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.border.*; 

public class Map_Maker_2 extends JPanel implements Runnable 
{ 
    public static final long serialVersionUID=26362862L; 
    int W=1600,H=1200,JavaFX_Browser_Edge_W=200,JavaFX_Browser_Edge_H=200,Upper_Left_Button_Panel_W=90; 
    static Dimension Screen_Size=Toolkit.getDefaultToolkit().getScreenSize(); 
    String Google_Url="http://maps.google.com/maps?q=Address&t=m&z=Zoom",Address="760 West Genesee Street Syracuse NY 13204",Url; 
    Insets An_Inset=new Insets(0,0,0,0); 
    JTextArea Upper_Left_TextArea=new JTextArea(Address); 
    JavaFX_Browser_Panel Left_JavaFX_Browser_Panel,Upper_Right_JavaFX_Browser_Panel,Lower_Right_JavaFX_Browser_Panel; 
// boolean Use_iFrame_B=true; 
    boolean Use_iFrame_B=false; 
    Thread Empty_JPanel_Thread; 

    public Map_Maker_2() 
    { 
    JavaFX_Browser_Panel.Set_Edge(JavaFX_Browser_Edge_W,JavaFX_Browser_Edge_H); 

    FlowLayout Fl=new FlowLayout(0,0,0); 
    setLayout(Fl); 

    JPanel Left_Panel=new JPanel(Fl); 
    Left_Panel.setBorder(new EtchedBorder()); 
    Left_Panel.setPreferredSize(new Dimension(W/2,H)); 
    add(Left_Panel); 

    JPanel Upper_Left_Panel=new JPanel(Fl); 
    Upper_Left_Panel.setBorder(new EtchedBorder()); 
    Upper_Left_Panel.setPreferredSize(new Dimension(W/2-2,H/4-2)); 
    Left_Panel.add(Upper_Left_Panel); 

    Upper_Left_TextArea.setFont(new Font("Times New Roman",0,16)); 
    Upper_Left_TextArea.setBorder(new EtchedBorder()); 
    Upper_Left_TextArea.setPreferredSize(new Dimension(W/2-2-Upper_Left_Button_Panel_W-4,H/4-6)); 
    Upper_Left_Panel.add(Upper_Left_TextArea); 

    FlowLayout Button_Panel_Fl=new FlowLayout(0,0,66); 

    JPanel Upper_Left_Button_Panel=new JPanel(Button_Panel_Fl); 
    Upper_Left_Button_Panel.setBorder(new EtchedBorder()); 
    Upper_Left_Button_Panel.setPreferredSize(new Dimension(Upper_Left_Button_Panel_W,H/4-6)); 
    Upper_Left_Panel.add(Upper_Left_Button_Panel); 

    JButton Get_Maps_Button=new JButton("Get Maps"); 
    Get_Maps_Button.setForeground(new Color(0,0,230)); 
    Get_Maps_Button.setFont(new Font("Times New Roman",0,16)); 
    Get_Maps_Button.setMargin(An_Inset); 
    Get_Maps_Button.setPreferredSize(new Dimension(Upper_Left_Button_Panel_W-5,26)); 
    Get_Maps_Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { Get_Maps(); } }); 

    Upper_Left_Button_Panel.add(Get_Maps_Button); 

    JButton Print_Button=new JButton("Print"); 
    Print_Button.setForeground(new Color(0,0,230)); 
    Print_Button.setFont(new Font("Times New Roman",0,16)); 
    Print_Button.setMargin(An_Inset); 
    Print_Button.setPreferredSize(new Dimension(Upper_Left_Button_Panel_W-5,26)); 
    Upper_Left_Button_Panel.add(Print_Button); 


    JPanel Lower_Left_Panel=new JPanel(Fl); 
    Lower_Left_Panel.setPreferredSize(new Dimension(W/2-2,H*3/4)); 
    Left_Panel.add(Lower_Left_Panel); 

    Left_JavaFX_Browser_Panel=new JavaFX_Browser_Panel(W/2-4,H*3/4); 
    Lower_Left_Panel.add(Left_JavaFX_Browser_Panel); 

    JPanel Right_Panel=new JPanel(new FlowLayout(0,0,1)); 
    Right_Panel.setBorder(new EtchedBorder()); 
    Right_Panel.setPreferredSize(new Dimension(W/2,H-2)); 
    add(Right_Panel); 

    JPanel Upper_Right_Outer_Panel=new JPanel(Fl); 
    Upper_Right_Outer_Panel.setBorder(new EtchedBorder()); 
    Upper_Right_Outer_Panel.setPreferredSize(new Dimension(W/2-4,H/2-4)); 
    Right_Panel.add(Upper_Right_Outer_Panel); 

    JPanel Upper_Right_Panel=new JPanel(Fl); 
    Upper_Right_Panel.setPreferredSize(new Dimension(W/2-8,H/2-8)); 
    Upper_Right_Outer_Panel.add(Upper_Right_Panel); 

    Upper_Right_JavaFX_Browser_Panel=new JavaFX_Browser_Panel(W/2-8,H/2-8); 
    Upper_Right_Panel.add(Upper_Right_JavaFX_Browser_Panel); 

    JPanel Lower_Right_Outer_Panel=new JPanel(Fl); 
    Lower_Right_Outer_Panel.setBorder(new EtchedBorder()); 
    Lower_Right_Outer_Panel.setPreferredSize(new Dimension(W/2-4,H/2-4)); 
    Right_Panel.add(Lower_Right_Outer_Panel); 

    JPanel Lower_Right_Panel=new JPanel(Fl); 
    Lower_Right_Panel.setPreferredSize(new Dimension(W/2-8,H/2-8)); 
    Lower_Right_Outer_Panel.add(Lower_Right_Panel); 

    Lower_Right_JavaFX_Browser_Panel=new JavaFX_Browser_Panel(W/2-8,H/2-8); 
    Lower_Right_Panel.add(Lower_Right_JavaFX_Browser_Panel); 

    setPreferredSize(new Dimension(W,H)); 
    Get_Maps(); 
    } 

    void Get_Maps() 
    { 
    Address=Upper_Left_TextArea.getText(); 
    Out(Address); 
    Url=Google_Url.replace("Address",Address.replace(" ","+")); 
    Out(Url); 

    if (Use_iFrame_B) 
    { 
     Left_JavaFX_Browser_Panel.Load_iFrame(Url.replace("Zoom","12&output=embed"),785,890); 
     Upper_Right_JavaFX_Browser_Panel.Load_iFrame(Url.replace("Zoom","16&output=embed"),778,578); 
     Lower_Right_JavaFX_Browser_Panel.Load_iFrame(Url.replace("Zoom","19&output=embed"),775,575); 
    } 
    else 
    { 
     Left_JavaFX_Browser_Panel.setURL(Url.replace("Zoom","12"));   // This works fine without output=embed in url, but it will show address bar, I want to hide that 
     Upper_Right_JavaFX_Browser_Panel.setURL(Url.replace("Zoom","16")); 
     Lower_Right_JavaFX_Browser_Panel.setURL(Url.replace("Zoom","19"));  
    } 
    } 

    public void run() 
    { 


    } 

    public void start() 
    { 
    if (Empty_JPanel_Thread==null) 
    { 
     Empty_JPanel_Thread=new Thread(this); 
     Empty_JPanel_Thread.setPriority(Thread.NORM_PRIORITY); 
     Empty_JPanel_Thread.start(); 
    } 
    } 

    public void stop() { if (Empty_JPanel_Thread!=null) Empty_JPanel_Thread=null; } 

    private static void out(String message) { System.out.print(message); } 
    private static void Out(String message) { System.out.println(message); } 

    // Create the GUI and show it. For thread safety, this method should be invoked from the event-dispatching thread. 
    static void Create_And_Show_GUI() 
    { 
    final Map_Maker_2 demo=new Map_Maker_2(); 

    JFrame frame=new JFrame("Map Maker 2"); 
    frame.add(demo); 
    frame.addWindowListener(new WindowAdapter() 
    { 
     public void windowActivated(WindowEvent e) { } 
     public void windowClosed(WindowEvent e) { } 
     public void windowClosing(WindowEvent e) { System.exit(0); } 
     public void windowDeactivated(WindowEvent e) { } 
     public void windowDeiconified(WindowEvent e) { demo.repaint(); } 
     public void windowGainedFocus(WindowEvent e) { demo.repaint(); } 
     public void windowIconified(WindowEvent e) { } 
     public void windowLostFocus(WindowEvent e) { } 
     public void windowOpening(WindowEvent e) { demo.repaint(); } 
     public void windowOpened(WindowEvent e) { } 
     public void windowResized(WindowEvent e) { demo.repaint(); } 
     public void windowStateChanged(WindowEvent e) { demo.repaint(); } 
    }); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
    // Schedule a job for the event-dispatching thread : creating and showing this application's GUI. 
    SwingUtilities.invokeLater(new Runnable() { public void run() { Create_And_Show_GUI(); } }); 
    } 
} 

答えて

0

さてさて、私は答えを見つけた:以下で

if (new File(Url).exists()) setURL(new File(Url)); 
    else eng.loadContent("<iframe width="+W+" height="+H+" src="+Url+" style=border:0; marginheight=0 marginwidth=0 allowfullscreen></iframe>"); 

はJavaFX_Browser_Panelのコードを置き換え

String Content="<Html>\n"+ 
        "<style>\n"+ 
        " html,body,div,iframe\n"+ 
        " {\n"+ 
        " height: 100%;\n"+ 
        " overflow: hidden;\n"+ 
        " overflow-x: hidden;\n"+ 
        " overflow-y: hidden;\n"+ 
        " margin: 0; padding: 0;\n"+ 
        " }\n"+ 
        "</style>\n"+ 
        "<iframe width="+W+" height="+H+" src="+Url+" style=border:0></iframe>\n"+ 
        "</Html>"; 
    if (new File(Url).exists()) setURL(new File(Url)); 
    else eng.loadContent(Content); 
関連する問題