Note: Advice in this article will only work for JxBrowser 6. See the corresponding article for JxBrowser 7 here.(注意:本文中的建议仅适用于JxBrowser6,JxBrowser7相应文章请点击这里。)


JxBrowser supports HTML Input element with type=color and displays default Color chooser dialog where user can select required color. You can override default behavior by registering your own DialogHandler implementation with overridden onColorChooser() method where you can set the required color programmatically without displaying any UI dialogs. The following code demonstrates how to do this:(JxBrowser支持type = color的HTML Input元素,并显示默认的“颜色选择器”对话框,用户可以在其中选择所需的颜色。您可以通过使用覆盖的onColorChooser()方法注册自己的DialogHandler实现来覆盖默认行为,在该方法中,可以通过编程方式设置所需的颜色,而无需显示任何UI对话框。以下代码演示了如何执行此操作:)

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.CloseStatus;
import com.teamdev.jxbrowser.chromium.ColorChooserParams;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import com.teamdev.jxbrowser.chromium.swing.DefaultDialogHandler;

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

/**
 * This sample demonstrates how to override behaviour of standard
 * color chooser dialog for HTML5 input color element.
 */
public class ColorChooserSample {
    public static void main(String[] args) {
        Browser browser = new Browser();
        BrowserView view = new BrowserView(browser);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(view, BorderLayout.CENTER);
        frame.setSize(700, 500);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        browser.setDialogHandler(new DefaultDialogHandler(view) {
            @Override
            public CloseStatus onColorChooser(ColorChooserParams params) {
                params.setColor(Color.BLUE);
                return CloseStatus.OK;
            }
        });

        browser.loadHTML("<html><body><input type='color' value='#ff000'></body></html>");
    }
}