如何设置JxBrowser背景为透明
Ho to set JxBrowser background to transparent
我使用 JxBrowser
在视图中加载一些内容。
我愿意:
//create frame
JFrame frame = new JFrame("Some title");
//create browser
Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
//remove default window controls
frame.setUndecorated(true);
//add browser view to frame
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(view, BorderLayout.CENTER);
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//load url
browser.loadURL("http://example.com");
当我 运行 时,我的浏览器视图是白色的。我尝试将框架背景设置为透明:
frame.setBackground(new Color(0, 0, 0, 0.0f));
但它隐藏了整个 window。
有什么想法吗?如何为浏览器视图设置透明背景?
刚找到这个例子,这是设置透明背景的方法:
BrowserPreferences preferences = browser.getPreferences();
preferences.setTransparentBackground(true);
browser.setPreferences(preferences);
在JxBrowser 6.10 及更高版本中,有允许在网页上启用透明背景支持的功能。以下示例演示如何启用透明背景支持:
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserPreferences;
import com.teamdev.jxbrowser.chromium.BrowserType;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
/**
* This sample demonstrates how to create Browser instance with transparent background.
*/
public class TransparentPageSample {
public static void main(String[] args) {
Browser browser = new Browser(BrowserType.LIGHTWEIGHT);
// Enable support of transparent background
BrowserPreferences preferences = browser.getPreferences();
preferences.setTransparentBackground(true);
browser.setPreferences(preferences);
BrowserView view = new BrowserView(browser);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(new Color(0, 150, 255, 255));
panel.add(view, BorderLayout.CENTER);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(panel, BorderLayout.CENTER);
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.loadHTML("<html><body>"
+ "<div style='background: yellow; opacity: 0.7;'>\n"
+ " This text is in the yellow half-transparent div and should "
+ " appear as in the green due to the blue JPanel behind."
+ "</div>\n"
+ "<div style='background: red;'>\n"
+ " This text is in the red opaque div and should appear as is."
+ "</div>\n"
+ "<div>\n"
+ " This text is in the non-styled div and should appear as in "
+ " the blue due to the blue JPanel behind."
+ "</div>\n"
+ "</body></html>");
}
}
https://jxbrowser.support.teamdev.com/support/solutions/articles/9000104967-transparent-background
我使用 JxBrowser
在视图中加载一些内容。
我愿意:
//create frame
JFrame frame = new JFrame("Some title");
//create browser
Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
//remove default window controls
frame.setUndecorated(true);
//add browser view to frame
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(view, BorderLayout.CENTER);
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//load url
browser.loadURL("http://example.com");
当我 运行 时,我的浏览器视图是白色的。我尝试将框架背景设置为透明:
frame.setBackground(new Color(0, 0, 0, 0.0f));
但它隐藏了整个 window。
有什么想法吗?如何为浏览器视图设置透明背景?
刚找到这个例子,这是设置透明背景的方法:
BrowserPreferences preferences = browser.getPreferences();
preferences.setTransparentBackground(true);
browser.setPreferences(preferences);
在JxBrowser 6.10 及更高版本中,有允许在网页上启用透明背景支持的功能。以下示例演示如何启用透明背景支持:
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserPreferences;
import com.teamdev.jxbrowser.chromium.BrowserType;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
/**
* This sample demonstrates how to create Browser instance with transparent background.
*/
public class TransparentPageSample {
public static void main(String[] args) {
Browser browser = new Browser(BrowserType.LIGHTWEIGHT);
// Enable support of transparent background
BrowserPreferences preferences = browser.getPreferences();
preferences.setTransparentBackground(true);
browser.setPreferences(preferences);
BrowserView view = new BrowserView(browser);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(new Color(0, 150, 255, 255));
panel.add(view, BorderLayout.CENTER);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(panel, BorderLayout.CENTER);
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.loadHTML("<html><body>"
+ "<div style='background: yellow; opacity: 0.7;'>\n"
+ " This text is in the yellow half-transparent div and should "
+ " appear as in the green due to the blue JPanel behind."
+ "</div>\n"
+ "<div style='background: red;'>\n"
+ " This text is in the red opaque div and should appear as is."
+ "</div>\n"
+ "<div>\n"
+ " This text is in the non-styled div and should appear as in "
+ " the blue due to the blue JPanel behind."
+ "</div>\n"
+ "</body></html>");
}
}
https://jxbrowser.support.teamdev.com/support/solutions/articles/9000104967-transparent-background