2012-12-05 4 views
9

मैं JEditorPane का उपयोग कर स्विंग पर काम कर रहा हूँ, लेकिन यह जावास्क्रिप्ट या की तरह <object> आदि और नहीं रंग, फ़ॉन्ट शैली आकार आदिJEditorPane

समर्थन कुछ उन्नत टैग का समर्थन नहीं कर रहा है वहाँ इसलिए किसी भी समाधान है वह संपादक फलक HTML फ़ाइल प्रदर्शित कर सकता है क्योंकि यह सामान्य HTML ब्राउज़र में प्रदर्शित किया जा रहा है?

उत्तर

10
  • वर्तमान Java6/7 केवल (तक) समर्थन css के लिए कम समर्थन के साथ Html 3.2,

  • Html5 के लिए

    और काफी पूर्ण css supportJavaFx Components उपयोग करने के लिए,

  • वहाँ (पूर्ण के साथ कस्टम जावा लाइब्रेरीज कर रहे हैं? ??) एचटीएमएल 4/5, सीएसएस और जेएस का समर्थन है, लेकिन मुझे JavaFX का उपयोग करने का सुझाव दिया जाएगा

+0

सर मुझे जोड़ सकते हैं और स्विंग खिड़की पर JavaFX नियंत्रण हटाने के लिए जब JFXPanel इसे फिर से कंटेनर खिड़की पर जोड़ा नहीं जा सकता निकाल दिया जाता है हो रहा है –

22

+1 mkorbel से +1।

JavaFXWebView का उपयोग करें जो स्विंग के साथ इसे एकीकृत करके HTML5 का समर्थन करता है।

  • :

    enter image description here

    import java.awt.*; 
    import java.awt.event.*; 
    import java.net.MalformedURLException; 
    import java.net.URL; 
    import javafx.application.Platform; 
    import javafx.beans.value.ChangeListener; 
    import javafx.beans.value.ObservableValue; 
    import static javafx.concurrent.Worker.State.FAILED; 
    import javafx.embed.swing.JFXPanel; 
    import javafx.event.EventHandler; 
    import javafx.scene.Scene; 
    import javafx.scene.web.WebEngine; 
    import javafx.scene.web.WebEvent; 
    import javafx.scene.web.WebView; 
    import javax.swing.*; 
    
    public class SimpleSwingBrowser implements Runnable { 
        private JFXPanel jfxPanel; 
        private WebEngine engine; 
    
        private JFrame frame = new JFrame(); 
        private JPanel panel = new JPanel(new BorderLayout()); 
        private JLabel lblStatus = new JLabel(); 
    
        private JButton btnGo = new JButton("Go"); 
        private JTextField txtURL = new JTextField(); 
        private JProgressBar progressBar = new JProgressBar(); 
    
        private void initComponents() { 
         jfxPanel = new JFXPanel(); 
    
         createScene(); 
    
         ActionListener al = new ActionListener() { 
          @Override public void actionPerformed(ActionEvent e) { 
           loadURL(txtURL.getText()); 
          } 
         }; 
    
         btnGo.addActionListener(al); 
         txtURL.addActionListener(al); 
    
         progressBar.setPreferredSize(new Dimension(150, 18)); 
         progressBar.setStringPainted(true); 
    
         JPanel topBar = new JPanel(new BorderLayout(5, 0)); 
         topBar.setBorder(BorderFactory.createEmptyBorder(3, 5, 3, 5)); 
         topBar.add(txtURL, BorderLayout.CENTER); 
         topBar.add(btnGo, BorderLayout.EAST); 
    
    
         JPanel statusBar = new JPanel(new BorderLayout(5, 0)); 
         statusBar.setBorder(BorderFactory.createEmptyBorder(3, 5, 3, 5)); 
         statusBar.add(lblStatus, BorderLayout.CENTER); 
         statusBar.add(progressBar, BorderLayout.EAST); 
    
         panel.add(topBar, BorderLayout.NORTH); 
         panel.add(jfxPanel, BorderLayout.CENTER); 
         panel.add(statusBar, BorderLayout.SOUTH); 
    
         frame.getContentPane().add(panel); 
        } 
    
        private void createScene() { 
    
         Platform.runLater(new Runnable() { 
          @Override public void run() { 
    
           WebView view = new WebView(); 
           engine = view.getEngine(); 
    
           engine.titleProperty().addListener(new ChangeListener<String>() { 
            @Override 
            public void changed(ObservableValue<? extends String> observable, String oldValue, final String newValue) { 
             SwingUtilities.invokeLater(new Runnable() { 
              @Override public void run() { 
               frame.setTitle(newValue); 
              } 
             }); 
            } 
           }); 
    
           engine.setOnStatusChanged(new EventHandler<WebEvent<String>>() { 
            @Override public void handle(final WebEvent<String> event) { 
             SwingUtilities.invokeLater(new Runnable() { 
              @Override public void run() { 
               lblStatus.setText(event.getData()); 
              } 
             }); 
            } 
           }); 
    
           engine.locationProperty().addListener(new ChangeListener<String>() { 
            @Override 
            public void changed(ObservableValue<? extends String> ov, String oldValue, final String newValue) { 
             SwingUtilities.invokeLater(new Runnable() { 
              @Override public void run() { 
               txtURL.setText(newValue); 
              } 
             }); 
            } 
           }); 
    
           engine.getLoadWorker().workDoneProperty().addListener(new ChangeListener<Number>() { 
            @Override 
            public void changed(ObservableValue<? extends Number> observableValue, Number oldValue, final Number newValue) { 
             SwingUtilities.invokeLater(new Runnable() { 
              @Override public void run() { 
               progressBar.setValue(newValue.intValue()); 
              } 
             }); 
            } 
           }); 
    
           engine.getLoadWorker() 
             .exceptionProperty() 
             .addListener(new ChangeListener<Throwable>() { 
    
              public void changed(ObservableValue<? extends Throwable> o, Throwable old, final Throwable value) { 
               if (engine.getLoadWorker().getState() == FAILED) { 
                SwingUtilities.invokeLater(new Runnable() { 
                 @Override public void run() { 
                  JOptionPane.showMessageDialog(
                    panel, 
                    (value != null) ? 
                    engine.getLocation() + "\n" + value.getMessage() : 
                    engine.getLocation() + "\nUnexpected error.", 
                    "Loading error...", 
                    JOptionPane.ERROR_MESSAGE); 
                 } 
                }); 
               } 
              } 
             }); 
    
           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; 
         } 
        } 
    
        @Override public void run() { 
    
         frame.setPreferredSize(new Dimension(1024, 600)); 
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    
         initComponents(); 
    
         loadURL("http://oracle.com"); 
    
         frame.pack(); 
         frame.setVisible(true); 
        } 
    
        public static void main(String[] args) { 
         SwingUtilities.invokeLater(new SimpleSwingBrowser()); 
        } 
    } 
    

    This link भी उपयोग of प्रदर्शन जावास्क्रिप्ट

    संदर्भ सहित WebView के कुछ उपयोगी उदाहरणों प्रदान करता है:

    यहाँ एक उदाहरण है

  • Add Java FX 2.0 to existing Netbeans project
+2

+1 बहुत अच्छा, शर्म की बात है मैं केवल एक बार मतदान कर सकते हैं – MadProgrammer

+0

@MadProgrammer +1 धन्यवाद, मुझे कोड के लिए क्रेडिट लेना अच्छा लगेगा, लेकिन इसे संदर्भ से हटा दिया गया था: पी –

+2

हां, लेकिन आपको पता था कि इसे कहां मिलना है;) – MadProgrammer

संबंधित मुद्दे