GVKun编程网logo

JavaFX WebEngine中的HyperlinkListener(javafxapplication)

25

在本文中,我们将带你了解JavaFXWebEngine中的HyperlinkListener在这篇文章中,我们将为您详细介绍JavaFXWebEngine中的HyperlinkListener的方方面

在本文中,我们将带你了解JavaFX WebEngine中的HyperlinkListener在这篇文章中,我们将为您详细介绍JavaFX WebEngine中的HyperlinkListener的方方面面,并解答javafxapplication常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的com.facebook.imagepipeline.listener.RequestLoggingListener的实例源码、com.intellij.ui.BrowserHyperlinkListener的实例源码、dom – 附加文本WebEngine – JavaFX、java – Android:在DialogInterface.OnClickListener()中的int是-1

本文目录一览:

JavaFX WebEngine中的HyperlinkListener(javafxapplication)

JavaFX WebEngine中的HyperlinkListener(javafxapplication)

过去,我使用过JEditorPane,现在我尽最大努力使用JavaFX
WebEngine。如何在显示的页面上为包含超链接的事件注册侦听器(如链接选择或单击链接)?

在JEditorPane中,有addHyperlinkListener方法…

编辑:

我遵循第一个答案中的建议。这是我的代码:

webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {    public void changed(ObservableValue ov, State oldState, State newState) {        if (newState == Worker.State.SUCCEEDED) {                // note next classes are from org.w3c.dom domain            EventListener listener = new EventListener() {                public void handleEvent(Event ev) {                    System.out.println("KLIKNIETO!!!");                }            };            Document doc = webEngine.getDocument();            Element el = doc.getElementById("a");            NodeList lista = doc.getElementsByTagName("a");            System.out.println("Liczba elementow: "+ lista.getLength());            for (int i=0; i<lista.getLength(); i++)                ((EventTarget)lista.item(i)).addEventListener("click", listener, false);        }    }});

单击链接后,我现在收到事件。但是,我需要获得对单击链接的引用(以获取其内容)。我该如何实现?

答案1

小编典典

加载相关文档后,可以使用w3c dom类在Java中添加单击事件处理程序,以捕获链接单击事件。

请参阅JavaFX WebView中的检测HTML textarea
onkeyup事件中的 Sergey示例。

您还可以使用JavaScript(例如,使用jQuery)捕获事件,这可能比使用w3c
dom api容易一些。

如果您使用JavaScript捕获事件,并且想要反馈事件的通知或从JavaScript到Java的后续处理,则可以使用JavaScript <=>
Java bridge
api。

我已记录了将此功能的示例添加到官方WebView教程的请求。

com.facebook.imagepipeline.listener.RequestLoggingListener的实例源码

com.facebook.imagepipeline.listener.RequestLoggingListener的实例源码

项目:GitHub    文件:ImageRequestTest.java   
@Test
public void testCreatingRequestFromExistingRequest() {
  ImageRequest original = ImageRequestBuilder
      .newBuilderWithSource(Uri.parse("http://frescolib.org/image.jpg"))
          .setCacheChoice(ImageRequest.CacheChoice.SMALL)
      .setimageDecodeOptions(new ImageDecodeOptionsBuilder().build())
      .setLocalThumbnailPreviewsEnabled(true)
      .setLowestPermittedRequestLevel(ImageRequest.RequestLevel.disK_CACHE)
      .setMediaVariations(MediaVariations.forMediaId("A113"))
      .setPostprocessor(new BasePostprocessor() {
        @Override
        public String getName() {
          return super.getName();
        }
      })
      .setProgressiveRenderingEnabled(true)
      .setRequestListener(new RequestLoggingListener())
      .setResizeOptions(new ResizeOptions(20,20))
      .setRotationoptions(Rotationoptions.forceRotation(Rotationoptions.ROTATE_90))
      .setRequestPriority(Priority.HIGH)
      .build();

  ImageRequest copy = ImageRequestBuilder.fromrequest(original).build();

  assertthat(copy).isEqualTo(original);
}
项目:fresco    文件:ImageRequestTest.java   
@Test
public void testCreatingRequestFromExistingRequest() {
  ImageRequest original = ImageRequestBuilder
      .newBuilderWithSource(Uri.parse("http://frescolib.org/image.jpg"))
          .setCacheChoice(ImageRequest.CacheChoice.SMALL)
      .setimageDecodeOptions(new ImageDecodeOptionsBuilder().build())
      .setLocalThumbnailPreviewsEnabled(true)
      .setLowestPermittedRequestLevel(ImageRequest.RequestLevel.disK_CACHE)
      .setMediaVariations(MediaVariations.forMediaId("A113"))
      .setPostprocessor(new BasePostprocessor() {
        @Override
        public String getName() {
          return super.getName();
        }
      })
      .setProgressiveRenderingEnabled(true)
      .setRequestListener(new RequestLoggingListener())
      .setResizeOptions(new ResizeOptions(20,20))
      .setRotationoptions(Rotationoptions.forceRotation(Rotationoptions.ROTATE_90))
      .setRequestPriority(Priority.HIGH)
      .build();

  ImageRequest copy = ImageRequestBuilder.fromrequest(original).build();

  assertthat(copy).isEqualTo(original);
}
项目:GitHub    文件:AnimationApplication.java   
@Override
public void onCreate() {
    super.onCreate();
    FLog.setMinimumLoggingLevel(FLog.VERBOSE);
    Set<RequestListener> listeners = new HashSet<>();
    listeners.add(new RequestLoggingListener());
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setRequestListeners(listeners)
            .build();
    Fresco.initialize(this,config);
}
项目:GitHub    文件:ZoomableApplication.java   
@Override
public void onCreate() {
    super.onCreate();
    FLog.setMinimumLoggingLevel(FLog.VERBOSE);
    Set<RequestListener> listeners = new HashSet<>();
    listeners.add(new RequestLoggingListener());
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setRequestListeners(listeners)
            .build();
    Fresco.initialize(this,config);
}
项目:Commentgallery    文件:galleryApplication.java   
@Override
public void onCreate() {
    super.onCreate();
    FLog.setMinimumLoggingLevel(FLog.VERBOSE);
    Set<RequestListener> listeners = new HashSet<>();
    listeners.add(new RequestLoggingListener());
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setRequestListeners(listeners)
            .build();
    Fresco.initialize(this,config);
}
项目:WindowImageView    文件:MyApp.java   
@Override
public void onCreate() {
    super.onCreate();
    Set<RequestListener> requestListeners = new HashSet<>();
    requestListeners.add(new RequestLoggingListener());
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            // other setters
            .setRequestListeners(requestListeners)
            .build();
    Fresco.initialize(this,config);
    FLog.setMinimumLoggingLevel(FLog.VERBOSE);
}
项目:gank-examples    文件:MyApplication.java   
private void initialize() {
        mApplication = this;
        mContext = this.getApplicationContext();
        mResources = this.getResources();
        Builder builder = Logcat.newBuilder();
        builder.logCatLogLevel(Logcat.SHOW_VERBOSE_LOG);
//        builder.logCatLogLevel(Logcat.NOT_SHOW_LOG);
//        Logcat.initialize(this,builder.build());
        Logcat.initialize(this);
        if (IS_DEBUG_ACTIVITYLIFE) {
            mActivityLifecycle = new MyActivityLifecycle();
            this.registeractivityLifecycleCallbacks(mActivityLifecycle);
        }
        //
        Set<RequestListener> requestListeners = new HashSet<>();
        requestListeners.add(new RequestLoggingListener());
        ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
                // other setters
                .setRequestListeners(requestListeners)
                //配置图片磁盘缓存
                .setMaindiskCacheConfig(diskCacheConfig.newBuilder(this)
                        .setBaseDirectoryName("image") //父目录下的文件夹名
                        .setBaseDirectoryPath(StorageUtils.getAppCacheFile(this)) //保存父目录
                        .build())
                .build();
        Fresco.initialize(this,config);
        FLog.setMinimumLoggingLevel(FLog.DEBUG);

        try {
            CrashHandler crashHandler = CrashHandler.getInstance();
            crashHandler.init(this,Config.CARSH_LOG_PATH);
        } catch (Exception e) {
            e.printstacktrace();
        }
    }
项目:SneezeReader    文件:ReaderApplication.java   
/**
 * 初始化fresco
 */
private void initFresco() {

    Set<RequestListener> requestListeners = new HashSet<>();
    requestListeners.add(new RequestLoggingListener());
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setBitmapsConfig(Bitmap.Config.ARGB_8888)
            .setDownsampleEnabled(true)
            .setNetworkFetcher(new OkHttpNetworkFetcher(new OkHttpClient()))
            .setRequestListeners(requestListeners)
            .build();
    Fresco.initialize(this,config);
}
项目:mobile-buy-sdk-android    文件:BaseApplication.java   
private void initFresco() {
  final ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(this);

  File cacheDir = getExternalCacheDir();
  if (cacheDir == null) {
    cacheDir = getCacheDir();
  }

  final diskCacheConfig.Builder maindiskCacheConfigBuilder = diskCacheConfig.newBuilder(this);
  maindiskCacheConfigBuilder.setBaseDirectoryName("image_cache");
  maindiskCacheConfigBuilder.setBaseDirectoryPath(cacheDir);
  maindiskCacheConfigBuilder.setMaxCacheSize(100 * 1024 * 1024);
  maindiskCacheConfigBuilder.setVersion(1);
  configBuilder.setMaindiskCacheConfig(maindiskCacheConfigBuilder.build());

  final ImagePipelineConfig.Builder config = ImagePipelineConfig.newBuilder(this);
  if (BuildConfig.DEBUG) {
    final Set<RequestListener> requestListeners = new HashSet<>();
    requestListeners.add(new RequestLoggingListener());
    config.setRequestListeners(requestListeners);

    FLog.setMinimumLoggingLevel(FLog.VERBOSE);
  }
  configBuilder.setMemoryTrimmableRegistry(frescoMemoryTrimmableRegistry);

  Fresco.initialize(this,config.build());
}
项目:fresco    文件:AnimationApplication.java   
@Override
public void onCreate() {
    super.onCreate();
    FLog.setMinimumLoggingLevel(FLog.VERBOSE);
    Set<RequestListener> listeners = new HashSet<>();
    listeners.add(new RequestLoggingListener());
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setRequestListeners(listeners)
            .build();
    Fresco.initialize(this,config);
}
项目:fresco    文件:ZoomableApplication.java   
@Override
public void onCreate() {
    super.onCreate();
    FLog.setMinimumLoggingLevel(FLog.VERBOSE);
    Set<RequestListener> listeners = new HashSet<>();
    listeners.add(new RequestLoggingListener());
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setRequestListeners(listeners)
            .build();
    Fresco.initialize(this,config);
}
项目:GitHub    文件:ImagePipelineConfigFactory.java   
private static void configureLoggingListeners(ImagePipelineConfig.Builder configBuilder) {
  Set<RequestListener> requestListeners = new HashSet<>();
  requestListeners.add(new RequestLoggingListener());
  configBuilder.setRequestListeners(requestListeners);
}
项目:GitHub    文件:ShowcaseApplication.java   
@Override
public void onCreate() {
  super.onCreate();
  FLog.setMinimumLoggingLevel(FLog.VERBOSE);
  Set<RequestListener> listeners = new HashSet<>();
  listeners.add(new RequestLoggingListener());

  OkHttpClient okHttpClient = new OkHttpClient.Builder()
      .addNetworkInterceptor(new StethoInterceptor())
      .build();

  ImagePipelineConfig imagePipelineConfig =
      OkHttpImagePipelineConfigFactory.newBuilder(this,okHttpClient)
          .setRequestListeners(listeners)
          .setProgressiveJpegConfig(new SimpleProgressiveJpegConfig())
          .setimagedecoderConfig(CustomImageFormatConfigurator.createimagedecoderConfig(this))
          .experiment()
          .setMediaVariationsIndexEnabled(
              new supplier<Boolean>() {
                @Override
                public Boolean get() {
                  return true;
                }
              })
          .experiment()
          .setBitmapPreparetoDraw(true,Integer.MAX_VALUE,true)
          .experiment()
          .setSmartResizingEnabled(suppliers.BOOLEAN_TRUE)
          .build();

  ImagePipelineConfig.getDefaultimageRequestConfig().setProgressiveRenderingEnabled(true);

  DraweeConfig.Builder draweeConfigBuilder = DraweeConfig.newBuilder();
  CustomImageFormatConfigurator.addCustomDrawableFactories(this,draweeConfigBuilder);

  draweeConfigBuilder.setDebugOverlayEnabledsupplier(
      DebugOverlaysupplierSingleton.getInstance(getApplicationContext()));

  Fresco.initialize(this,imagePipelineConfig,draweeConfigBuilder.build());

  final Context context = this;
  Stetho.initialize(
      Stetho.newInitializerBuilder(context)
          .enableDumpapp(
              new DumperPluginsprovider() {
                @Override
                public Iterable<DumperPlugin> get() {
                  return new Stetho.DefaultDumperPluginsBuilder(context)
                      .provide(new FrescoStethoPlugin())
                      .finish();
                }
              })
          .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
          .build());
}
项目:GongXianSheng    文件:ImagePipelineConfigFactory.java   
private static void configureLoggingListeners(ImagePipelineConfig.Builder configBuilder) {
  Set<RequestListener> requestListeners = new HashSet<RequestListener>();
  requestListeners.add(new RequestLoggingListener());
  configBuilder.setRequestListeners(requestListeners);
}
项目:meiShi    文件:ImagePipelineConfigFactory.java   
private static void configureLoggingListeners(ImagePipelineConfig.Builder configBuilder) {
    Set<RequestListener> requestListeners = new HashSet<>();
    requestListeners.add(new RequestLoggingListener());
    configBuilder.setRequestListeners(requestListeners);
}
项目:fresco    文件:ImagePipelineConfigFactory.java   
private static void configureLoggingListeners(ImagePipelineConfig.Builder configBuilder) {
  Set<RequestListener> requestListeners = new HashSet<>();
  requestListeners.add(new RequestLoggingListener());
  configBuilder.setRequestListeners(requestListeners);
}
项目:fresco    文件:ShowcaseApplication.java   
@Override
public void onCreate() {
  super.onCreate();
  FLog.setMinimumLoggingLevel(FLog.VERBOSE);
  Set<RequestListener> listeners = new HashSet<>();
  listeners.add(new RequestLoggingListener());

  OkHttpClient okHttpClient = new OkHttpClient.Builder()
      .addNetworkInterceptor(new StethoInterceptor())
      .build();

  ImagePipelineConfig imagePipelineConfig =
      OkHttpImagePipelineConfigFactory.newBuilder(this,draweeConfigBuilder.build());

  final Context context = this;
  Stetho.initialize(
      Stetho.newInitializerBuilder(context)
          .enableDumpapp(
              new DumperPluginsprovider() {
                @Override
                public Iterable<DumperPlugin> get() {
                  return new Stetho.DefaultDumperPluginsBuilder(context)
                      .provide(new FrescoStethoPlugin())
                      .finish();
                }
              })
          .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
          .build());
}

com.intellij.ui.BrowserHyperlinkListener的实例源码

com.intellij.ui.BrowserHyperlinkListener的实例源码

项目:hybris-integration-intellij-idea-plugin    文件:informationStep.java   
private void createuicomponents() {
    final Font font = UIManager.getFont("Label.font");
    final String bodyRule = "body { font-family: " + font.getFamily() + "; " + "font-size: " + font.getSize() + "pt; }";
    informationEditorPane = new JEditorPane();
    informationEditorPane.setEditorKit(new HTMLEditorKit());
    ((HTMLDocument) informationEditorPane.getDocument()).getStyleSheet().addRule(bodyRule);
    cvsEditorPane = new JEditorPane();
    cvsEditorPane.setEditorKit(new HTMLEditorKit());
    ((HTMLDocument) cvsEditorPane.getDocument()).getStyleSheet().addRule(bodyRule);
    jrebelEditorPane = new JEditorPane();
    jrebelEditorPane.setEditorKit(new HTMLEditorKit());
    ((HTMLDocument) jrebelEditorPane.getDocument()).getStyleSheet().addRule(bodyRule);
    jiraEditorPane = new JEditorPane();
    jiraEditorPane.setEditorKit(new HTMLEditorKit());
    ((HTMLDocument) jiraEditorPane.getDocument()).getStyleSheet().addRule(bodyRule);
    jiraEditorPane.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
}
项目:educational-plugin    文件:StudySwingToolWindow.java   
@Override
public JComponent createTaskInfoPanel(Project project) {
  myTaskTextPane = new JTextPane();
  final JBScrollPane scrollPane = new JBScrollPane(myTaskTextPane);
  myTaskTextPane.setContentType(new HTMLEditorKit().getContentType());
  final EditorColoRSScheme editorColoRSScheme = EditorColorsManager.getInstance().getGlobalScheme();
  int fontSize = editorColoRSScheme.getEditorFontSize();
  final String fontName = editorColoRSScheme.getEditorFontName();
  final Font font = new Font(fontName,Font.PLAIN,fontSize);
  String bodyRule = "body { font-family: " + font.getFamily() + "; " +
                    "font-size: " + font.getSize() + "pt; }" +
                    "pre {font-family: Courier; display: inline; ine-height: 50px; padding-top: 5px; padding-bottom: 5px; padding-left: 5px; background-color:"
                    + ColorUtil.toHex(ColorUtil.dimmer(UIUtil.getPanelBackground())) + ";}" +
                    "code {font-family: Courier; display: flex; float: left; background-color:"
                    + ColorUtil.toHex(ColorUtil.dimmer(UIUtil.getPanelBackground())) + ";}";
  ((HTMLDocument)myTaskTextPane.getDocument()).getStyleSheet().addRule(bodyRule);
  myTaskTextPane.setEditable(false);
  if (!UIUtil.isUnderDarcula()) {
    myTaskTextPane.setBackground(EditorColorsManager.getInstance().getGlobalScheme().getDefaultBackground());
  }
  myTaskTextPane.setBorder(new EmptyBorder(20,20,10));
  myTaskTextPane.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
  return scrollPane;
}
项目:hybris-integration-intellij-idea-plugin    文件:discountImportstep.java   
private void createuicomponents() {
    final Font font = UIManager.getFont("Label.font");
    final String bodyRule = "body { font-family: " + font.getFamily() + "; " + "font-size: " + font.getSize() + "pt; }";
    discountEditorPane = new JEditorPane();
    discountEditorPane.setEditorKit(new HTMLEditorKit());
    ((HTMLDocument) discountEditorPane.getDocument()).getStyleSheet().addRule(bodyRule);
    discountEditorPane.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
}
项目:intellij-ce-playground    文件:Messages.java   
@NotNull
public static JTextPane configureMessagePaneUi(JTextPane messageComponent,String message,final boolean addbrowserHyperlinkListener) {
  messageComponent.setFont(UIUtil.getLabelFont());
  if (BasicHTML.isHTMLString(message)) {
    final HTMLEditorKit editorKit = new HTMLEditorKit();
    editorKit.getStyleSheet().addRule(UIUtil.displayPropertiesToCSS(UIUtil.getLabelFont(),UIUtil.getLabelForeground()));
    messageComponent.setEditorKit(editorKit);
    messageComponent.setContentType(UIUtil.HTML_MIME);
    if (addbrowserHyperlinkListener) {
      messageComponent.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
    }
  }
  messageComponent.setText(message);
  messageComponent.setEditable(false);
  if (messageComponent.getCaret() != null) {
    messageComponent.setCaretPosition(0);
  }

  if (UIUtil.isUnderNimbusLookAndFeel()) {
    messageComponent.setopaque(false);
    messageComponent.setBackground(UIUtil.TRANSPARENT_COLOR);
  }
  else {
    messageComponent.setBackground(UIUtil.getoptionPaneBackground());
  }

  messageComponent.setForeground(UIUtil.getLabelForeground());
  return messageComponent;
}
项目:intellij-ce-playground    文件:DetailsPanel.java   
DataPanel(@NotNull Project project,boolean multiRoot,@NotNull disposable disposable) {
  super(UIUtil.HTML_MIME,"");
  myProject = project;
  myMultiRoot = multiRoot;
  setEditable(false);
  setopaque(false);
  putClientProperty(JEditorPane.HOnor_disPLAY_PROPERTIES,Boolean.TRUE);

  EditorColorsManager.getInstance().addEditorColorsListener(new EditorColorsAdapter() {
    @Override
    public void globalSchemeChange(EditorColoRSScheme scheme) {
      update();
    }
  },disposable);

  DefaultCaret caret = (DefaultCaret)getCaret();
  caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);

  addHyperlinkListener(new HyperlinkListener() {
    public void hyperlinkUpdate(HyperlinkEvent e) {
      if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED && SHOW_OR_HIDE_BRANCHES.equals(e.getDescription())) {
        myExpanded = !myExpanded;
        update();
      }
      else {
        browserHyperlinkListener.INSTANCE.hyperlinkUpdate(e);
      }
    }
  });
}
项目:intellij-ce-playground    文件:NewChannelDialog.java   
private NewChannelPanel() {
  String message = IdeBundle.message("updates.channel.name.message",myChannel.getName(),myLatestBuild.getMessage());
  configureMessageArea(myMessageArea,message,null,browserHyperlinkListener.INSTANCE);

  if (myLicenseInfo != null) {
    configureMessageArea(myLicenseArea,myLicenseInfo,browserHyperlinkListener.INSTANCE);
  }
  else {
    myLicenseArea.setVisible(false);
  }
}
项目:intellij-ce-playground    文件:changelistViewerDialog.java   
private void initCommitMessageArea(final Project project,final Committedchangelist changelist) {
  myCommitMessageArea = new JEditorPane(UIUtil.HTML_MIME,"");
  myCommitMessageArea.setBorder(BorderFactory.createEmptyBorder(3,3,3));
  myCommitMessageArea.setEditable(false);
  @NonNls final String text = IssueLinkHtmlRenderer.formatTextIntoHtml(project,changelist.getComment().trim());
  myCommitMessageArea.setBackground(UIUtil.getComboBoxdisabledBackground());
  myCommitMessageArea.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
  commitMessageScroll = ScrollPaneFactory.createScrollPane(myCommitMessageArea);
  myCommitMessageArea.setText(text);
  myCommitMessageArea.setCaretPosition(0);
}
项目:intellij-ce-playground    文件:StudyToolWindow.java   
public StudyToolWindow(final Project project) {
  super(true,true);
  JPanel toolbarPanel = createtoolbarPanel();
  setToolbar(toolbarPanel);

  final JTextPane taskTextPane = createTaskTextPane();

  VirtualFile[] files = FileEditorManager.getInstance(project).getSelectedFiles();
  TaskFile taskFile = null;
  for (VirtualFile file : files) {
    taskFile = StudyUtils.getTaskFile(project,file);
    if (taskFile != null) {
      break;
    }
  }
  if (taskFile == null) {
    taskTextPane.setText(EMPTY_TASK_TEXT);
    setContent(taskTextPane);
    return;
  }
  final Task task = taskFile.getTask();

  if (task != null) {
    final String taskText = getTaskText(task,task.getTaskDir(project));
    if (taskText == null) {
      return;
    }
    JBScrollPane scrollPane = new JBScrollPane(taskTextPane);
    taskTextPane.setText(taskText);
    taskTextPane.addHyperlinkListener(browserHyperlinkListener.INSTANCE);

    setContent(scrollPane);

    final FileEditorManagerListener listener = new StudyFileEditorManagerListener(project,taskTextPane);
    project.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER,listener);
  }
}
项目:intellij-ce-playground    文件:IpnbUtils.java   
public static JEditorPane createLatexPane(@NotNull final String source) {
  final JEditorPane editorPane = new JEditorPane();
  editorPane.setBackground(IpnbeditorUtil.getBackground());
  editorPane.setContentType(new HTMLEditorKit().getContentType());
  editorPane.setEditorKit(new HTMLEditorKit());
  final HTMLDocument document = (HTMLDocument)editorPane.getDocument();
  final StyleSheet sheet = document.getStyleSheet();
  sheet.addRule(ourBodyRule);
  sheet.addRule(ourCodeRule);
  sheet.addRule(ourAlertRule);
  sheet.addRule(ourAlertSuccessRule);
  sheet.addRule(ourAlertErrorRule);

  editorPane.setEditable(false);

  final String html = convertToHtml(source,document);
  editorPane.setText("<html><body>" + html + "</body></html>");

  editorPane.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
      final Container parent = editorPane.getParent();
      final MouseEvent parentEvent = SwingUtilities.convertMouseEvent(editorPane,e,parent);
      parent.dispatchEvent(parentEvent);
    }
  });
  editorPane.addHyperlinkListener(new browserHyperlinkListener());
  //Todo: jump to the section (see User Interface#Utilities)

  return editorPane;
}
项目:AndroidLocalizationer    文件:MultiSelectDialog.java   
@NotNull
public static JTextPane configureMessagePaneUi(JTextPane messageComponent,final boolean addbrowserHyperlinkListener) {
    messageComponent.setFont(UIUtil.getLabelFont());
    if (BasicHTML.isHTMLString(message)) {
        final HTMLEditorKit editorKit = new HTMLEditorKit();
        editorKit.getStyleSheet().addRule(UIUtil.displayPropertiesToCSS(UIUtil.getLabelFont(),UIUtil.getLabelForeground()));
        messageComponent.setEditorKit(editorKit);
        messageComponent.setContentType(UIUtil.HTML_MIME);
        if (addbrowserHyperlinkListener) {
            messageComponent.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
        }
    }
    messageComponent.setText(message);
    messageComponent.setEditable(false);
    if (messageComponent.getCaret() != null) {
        messageComponent.setCaretPosition(0);
    }

    if (UIUtil.isUnderNimbusLookAndFeel()) {
        messageComponent.setopaque(false);
        messageComponent.setBackground(UIUtil.TRANSPARENT_COLOR);
    }
    else {
        messageComponent.setBackground(UIUtil.getoptionPaneBackground());
    }

    messageComponent.setForeground(UIUtil.getLabelForeground());
    return messageComponent;
}
项目:tools-idea    文件:NewChannelDialog.java   
@Override
protected JComponent createCenterPanel() {
  JEditorPane pane = new JEditorPane(UIUtil.HTML_MIME,myinformationText);
  pane.addHyperlinkListener(new browserHyperlinkListener());
  pane.setEditable(false);
  pane.setBackground(UIUtil.getLabelBackground());
  JBScrollPane scrollPane = new JBScrollPane(pane);
  scrollPane.setBorder(BorderFactory.createEmptyBorder(0,0));
  return scrollPane;
}
项目:tools-idea    文件:UpdateInfoDialog.java   
public UpdateInfoPanel() {
  ApplicationInfo appInfo = ApplicationInfo.getInstance();
  myBuildNumber.setText(appInfo.getBuild().asstringWithoutProductCode() + ")");
  final String version = appInfo.getFullVersion();

  myVersionNumber.setText(version);
  myNewBuildNumber.setText(myLatestBuild.getNumber().asstringWithoutProductCode() + ")");
  myNewVersionNumber.setText(myLatestBuild.getVersion());
  myUpdateMessageLabel.setBackground(UIUtil.getLabelBackground());
  myScrollPane.setBackground(UIUtil.getLabelBackground());
  myScrollPane.setBorder(BorderFactory.createEmptyBorder(10,0));
  if (myLatestBuild.getMessage() != null) {
    StringBuilder builder = new StringBuilder();
    builder.append("<html><head>").append(UIUtil.getCssFontDeclaration(UIUtil.getLabelFont())).append("</head><body>")
      .append(StringUtil.formatLinks(myLatestBuild.getMessage()))
      .append("</body></html>");
    myUpdateMessageLabel.setText(builder.toString());
    myUpdateMessageLabel.addHyperlinkListener(new browserHyperlinkListener());
  }
  else {
    myUpdateMessageLabel.setVisible(false);
  }

  PatchInfo patch = myLatestBuild.findPatchForCurrentBuild();
  if (patch == null) {
    myPatchAvailableLabel.setVisible(false);
    myPatchSizeLabel.setVisible(false);
  }
  else {
    myPatchSizeLabel.setText(patch.getSize() + "MB");
  }

  if (SystemInfo.isMac) {
    myManualCheckLabel.setText("<html><br>To check for new updates manually,use the <b>" +
                               ApplicationNamesInfo.getInstance().getProductName() + " | Check for Updates</b> command.</html>");
  }

  LabelTextReplacingUtil.replaceText(myPanel);
}
项目:tools-idea    文件:changelistViewerDialog.java   
private void initCommitMessageArea(final Project project,changelist.getComment().trim());
  myCommitMessageArea.setBackground(UIUtil.getComboBoxdisabledBackground());
  myCommitMessageArea.addHyperlinkListener(new browserHyperlinkListener());
  commitMessageScroll = ScrollPaneFactory.createScrollPane(myCommitMessageArea);
  myCommitMessageArea.setText(text);
  myCommitMessageArea.setCaretPosition(0);
}
项目:consulo    文件:changelistViewerDialog.java   
private void initCommitMessageArea(final Project project,changelist.getComment().trim());
  myCommitMessageArea.setBackground(UIUtil.getComboBoxdisabledBackground());
  myCommitMessageArea.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
  commitMessageScroll = ScrollPaneFactory.createScrollPane(myCommitMessageArea);
  myCommitMessageArea.setText(text);
  myCommitMessageArea.setCaretPosition(0);
}
项目:intellij-ce-playground    文件:UpdateInfoDialog.java   
public UpdateInfoPanel() {
  ApplicationInfo appInfo = ApplicationInfo.getInstance();
  ApplicationNamesInfo appNames = ApplicationNamesInfo.getInstance();

  String message = myLatestBuild.getMessage();
  final String fullProductName = appNames.getFullProductName();
  if (message == null) {
    message = IdeBundle.message("updates.new.version.available",fullProductName);
  }
  final String homePageUrl = myUpdatedChannel.getHomePageUrl();
  if (!StringUtil.isEmptyOrSpaces(homePageUrl)) {
    final int idx = message.indexOf(fullProductName);
    if (idx >= 0) {
      message = message.substring(0,idx) + 
                "<a href=\'" + homePageUrl + "\'>" + fullProductName + "</a>" + message.substring(idx + fullProductName.length());
    }
  }
  configureMessageArea(myUpdateMessage,browserHyperlinkListener.INSTANCE);

  myCurrentVersion.setText(
    formatVersion(
      appInfo.getFullVersion() + (appInfo instanceof ApplicationInfoEx && ((ApplicationInfoEx)appInfo).isEAP() ? " EAP": ""),appInfo.getBuild().asstringWithoutProductCode()
    )
  );
  myNewVersion.setText(formatVersion(myLatestBuild.getVersion(),myLatestBuild.getNumber().asstringWithoutProductCode()));

  if (myPatch != null && !StringUtil.isEmptyOrSpaces(myPatch.getSize())) {
    myPatchInfo.setText(myPatch.getSize() + " MB");
  }
  else {
    myPatchLabel.setVisible(false);
    myPatchInfo.setVisible(false);
  }

  if (myWriteProtected) {
    message = IdeBundle.message("updates.write.protected",appNames.getProductName(),PathManager.getHomePath());
    configureMessageArea(myMessageArea,JBColor.RED,null);
  }
  else {
    configureMessageArea(myMessageArea);
  }

  if (myLicenseInfo != null) {
    configureMessageArea(myLicenseArea,myPaidUpgrade ? JBColor.RED : null,null);
  }
}
项目:intellij-ce-playground    文件:changelistDetailsAction.java   
public static void showDetailsPopup(final Project project,final Committedchangelist changelist) {
  StringBuilder detailsBuilder = new StringBuilder("<html><head>");
  detailsBuilder.append(UIUtil.getCssFontDeclaration(UIUtil.getLabelFont())).append("</head><body>");
  final AbstractVcs vcs = changelist.getVcs();
  CachingCommittedChangesProvider provider = null;
  if (vcs != null) {
    provider = vcs.getCachingCommittedChangesProvider();
    if (provider != null && provider.getchangelistTitle() != null) {
      detailsBuilder.append(provider.getchangelistTitle()).append(" #").append(changelist.getNumber()).append("<br>");
    }
  }
  @NonNls String committer = "<b>" + changelist.getCommitterName() + "</b>";
  detailsBuilder.append(VcsBundle.message("changelist.details.committed.format",committer,DateFormatUtil.formatPrettyDateTime(changelist.getCommitDate())));
  detailsBuilder.append("<br>");

  if (provider != null) {
    final Committedchangelist originalchangelist = Receivedchangelist.unwrap(changelist);
    for(changelistColumn column: provider.getColumns()) {
      if (changelistColumn.isCustom(column)) {
        String value = column.getValue(originalchangelist).toString();
        if (value.length() == 0) {
          value = "<none>";
        }
        detailsBuilder.append(column.getTitle()).append(": ").append(XmlStringUtil.escapestring(value)).append("<br>");
      }
    }
  }

  detailsBuilder.append(IssueLinkHtmlRenderer.formatTextWithLinks(project,changelist.getComment()));
  detailsBuilder.append("</body></html>");

  JEditorPane editorPane = new JEditorPane(UIUtil.HTML_MIME,detailsBuilder.toString());
  editorPane.setEditable(false);
  editorPane.setBackground(HintUtil.informatION_COLOR);
  editorPane.select(0,0);
  editorPane.addHyperlinkListener(browserHyperlinkListener.INSTANCE);
  JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(editorPane);
  final JBPopup hint =
    JBPopupFactory.getInstance().createComponentPopupBuilder(scrollPane,editorPane)
      .setDimensionServiceKey(project,"changelist.details.popup",false)
      .setResizable(true)
      .setMovable(true)
      .setRequestFocus(true)
      .setTitle(VcsBundle.message("changelist.details.title"))
      .createPopup();
  hint.showInBestPositionFor(DataManager.getInstance().getDataContext());
}
项目:intellij    文件:WithbrowserHyperlinkExecutionException.java   
@Override
public final void hyperlinkUpdate(HyperlinkEvent e) {
  if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
    browserHyperlinkListener.INSTANCE.hyperlinkUpdate(e);
  }
}
项目:tools-idea    文件:changelistDetailsAction.java   
public static void showDetailsPopup(final Project project,DateFormatUtil.formatPrettyDateTime(changelist.getCommitDate())));
  detailsBuilder.append("<br>");

  if (provider != null) {
    final Committedchangelist originalchangelist;
    if (changelist instanceof Receivedchangelist) {
      originalchangelist = ((Receivedchangelist) changelist).getBaseList();
    }
    else {
      originalchangelist = changelist;
    }
    for(changelistColumn column: provider.getColumns()) {
      if (changelistColumn.isCustom(column)) {
        String value = column.getValue(originalchangelist).toString();
        if (value.length() == 0) {
          value = "<none>";
        }
        detailsBuilder.append(column.getTitle()).append(": ").append(XmlStringUtil.escapestring(value)).append("<br>");
      }
    }
  }

  detailsBuilder.append(IssueLinkHtmlRenderer.formatTextWithLinks(project,0);
  editorPane.addHyperlinkListener(new browserHyperlinkListener());
  JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(editorPane);
  final JBPopup hint =
    JBPopupFactory.getInstance().createComponentPopupBuilder(scrollPane,false)
      .setResizable(true)
      .setMovable(true)
      .setRequestFocus(true)
      .setTitle(VcsBundle.message("changelist.details.title"))
      .createPopup();
  hint.showInBestPositionFor(DataManager.getInstance().getDataContext());
}
项目:tools-idea    文件:GitLogDetailsPanel.java   
public GitLogDetailsPanel(final Project myProject,final DetailsCache detailsCache,final Convertor<VirtualFile,CachedRefs> refsProvider,Processor<AbstractHash> markProcessor) {
  myRefsProvider = refsProvider;
  myMarkProcessor = markProcessor;
  myPanel = new JPanel(new cardlayout());
  myPanel.add(UIVcsUtil.errorPanel("nothing selected",false),nothing_SELECTED);
  myPanel.add(UIVcsUtil.errorPanel("Loading...",LOADING);
  myPanel.add(UIVcsUtil.errorPanel("Several commits selected",MULTIPLE_SELECTED);

  myHtmlHighlighter = new HtmlHighlighter();
  myPresentationData = new MyPresentationData(myProject,detailsCache,myHtmlHighlighter);

  final JPanel wrapper = new JPanel(new GridBagLayout());
  final GridBagConstraints gb = new GridBagConstraints(0,1,GridBagConstraints.norTHWEST,GridBagConstraints.HORIZONTAL,new Insets(1,1),0);

  myJEditorPane = new JEditorPane(UIUtil.HTML_MIME,"");
  myJEditorPane.setPreferredSize(new Dimension(150,100));
  myJEditorPane.setEditable(false);
  myJEditorPane.setBackground(UIUtil.getComboBoxdisabledBackground());
  myJEditorPane.addHyperlinkListener(new browserHyperlinkListener() {
    @Override
    protected void hyperlinkActivated(HyperlinkEvent e) {
      if (CONfigURE_BRANCHES.equals(e.getDescription())) {
        if (myRoot == null) return;
        final CachedRefs symbolicRefs = refsProvider.convert(myRoot);
        if (symbolicRefs == null) return;
        final TreeSet<String> localBranches = symbolicRefs.getLocalBranches();
        if (localBranches == null || localBranches.isEmpty()) {
          VcsBalloonProblemNotifier.showOverChangesView(myProject,"Branches is not loaded yet",MessageType.WARNING);
          return;
        }
        final ContainedInBranchesConfigDialog dialog =
          new ContainedInBranchesConfigDialog(myProject,localBranches,symbolicRefs.getRemoteBranches(),symbolicRefs.getCurrentName(),symbolicRefs.getTrackedRemoteName());
        dialog.show();
        if (dialog.isChanged()) {
          //detailsCache.clearBranches();
          myPresentationData.branchesPresentation();
          changeDetailsText();
        }
        return;
      }
      super.hyperlinkActivated(e);
    }
  });

  myMarksPanel = new JPanel();
  final BoxLayout BoxLayout = new BoxLayout(myMarksPanel,BoxLayout.X_AXIS);
  myMarksPanel.setLayout(BoxLayout);
  gb.weightx = 1;
  wrapper.add(myMarksPanel,gb);
  ++ gb.gridy;
  gb.weighty = 1;
  gb.fill = GridBagConstraints.BOTH;
  final JBScrollPane tableScroll = new JBScrollPane(myJEditorPane);
  tableScroll.setBorder(null);
  myJEditorPane.setBorder(null);
  wrapper.add(tableScroll,gb);
  myJEditorPane.setBackground(UIUtil.getTableBackground());
  myMarksPanel.setBackground(UIUtil.getTableBackground());
  wrapper.setBackground(UIUtil.getTableBackground());

  myPanel.add(wrapper,DATA);
  ((cardlayout) myPanel.getLayout()).show(myPanel,nothing_SELECTED);
}
项目:consulo    文件:changelistDetailsAction.java   
public static void showDetailsPopup(final Project project,false)
      .setResizable(true)
      .setMovable(true)
      .setRequestFocus(true)
      .setTitle(VcsBundle.message("changelist.details.title"))
      .createPopup();
  hint.showInBestPositionFor(DataManager.getInstance().getDataContext());
}
项目:consulo    文件:HtmlPanel.java   
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
  browserHyperlinkListener.INSTANCE.hyperlinkUpdate(e);
}

dom – 附加文本WebEngine – JavaFX

dom – 附加文本WebEngine – JavaFX

如何将文本附加到webengine?我试过这个:

public TabMessage(String title) {
    super(title);
    view = new WebView();
    engine = view.getEngine();
    engine.loadContent("<body></body>");
    view.setPrefheight(240);
}

private void append(String msg){
    Document doc = engine.getDocument();
    Element el = doc.getElementById("body");
    String s = el.getTextContent();
    el.setTextContent(s+msg);
}

但是文档是空的

解决方法

您也可以使用JavaScript来执行追加.

final WebEngine appendEngine = view.getEngine();
btn.setonAction(new EventHandler<ActionEvent>() {
 @Override public void handle(ActionEvent event) {
   appendEngine.executeScript(
     "document.getElementById('content').appendChild(document.createTextNode('World!'));"
   );
 }
});

我有时会发现使用jQuery操作DOM而不是Java Document或本机JavaScript DOM接口更简单.

final WebEngine appendEngine = view.getEngine();
btn.setonAction(new EventHandler<ActionEvent>() {
 @Override public void handle(ActionEvent event) {
   executejQuery(appendEngine,"$('#content').append('World!');");
 }
});

...

private static Object executejQuery(final WebEngine engine,String script) {
  return engine.executeScript(
    "(function(window,document,version,callback) { "
    + "var j,d;"
    + "var loaded = false;"
    + "if (!(j = window.jQuery) || version > j.fn.jquery || callback(j,loaded)) {"
    + " var script = document.createElement(\"script\");"
    + " script.type = \"text/javascript\";"
    + " script.src = \"http://code.jquery.com/jquery-1.7.2.min.js\";"
    + " script.onload = script.onreadystatechange = function() {"
    + " if (!loaded && (!(d = this.readyState) || d == \"loaded\" || d == \"complete\")) {"
    + " callback((j = window.jQuery).noConflict(1),loaded = true);"
    + " j(script).remove();"
    + " }"
    + " };"
    + " document.documentElement.childNodes[0].appendChild(script) "
    + "} "
    + "})(window,\"1.7.2\",function($,jquery_loaded) {" + script + "});"
  );
}

无论您是使用Java文档API,还是使用Uluk,还是JavaScript或JQuery API,Uluk的优秀答案中的所有其他要点仍然适用.

java – Android:在DialogInterface.OnClickListener()中的int是-1

java – Android:在DialogInterface.OnClickListener()中的int是-1

我不明白为什么会这样.我有以下代码:

AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivityNew.this);

builder.setTitle("Title");
builder.setSingleChoiceItems(R.array.example_arrays,1,null);              
builder.setNegativeButton("Cancel",null);
builder.setPositiveButton("OK",new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,int which) {
        Toast.makeText(SettingsActivityNew.this,"which: " + which,Toast.LENGTH_LONG).show();
    }
});
builder.show();

出于一些奇怪的原因,int继续给我-1.为什么会这样?

最佳答案
来自doc:

Parameters
dialog  The dialog that received the click.
which   The button that was clicked (e.g. BUTTON1) or the position of the item clicked.

BUTTON_POSITIVE:

public static final int BUTTON_POSITIVE

Added in API level 3
The identifier for the positive button.

Constant Value: -1 (0xffffffff)

所以这并不奇怪,但完全正常.你每次得到-1因为你点击对话框的positiveButton

总结

以上是小编为你收集整理的java – Android:在DialogInterface.OnClickListener()中的int是-1全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

我们今天的关于JavaFX WebEngine中的HyperlinkListenerjavafxapplication的分享就到这里,谢谢您的阅读,如果想了解更多关于com.facebook.imagepipeline.listener.RequestLoggingListener的实例源码、com.intellij.ui.BrowserHyperlinkListener的实例源码、dom – 附加文本WebEngine – JavaFX、java – Android:在DialogInterface.OnClickListener()中的int是-1的相关信息,可以在本站进行搜索。

本文标签: