我正在尝试在linux中使用jxbrowser。我希望在一个选项卡中可以拖放我的swing组件,在另一个选项卡中可以有jxbrowser。但是,将jxbrowser添加到另一个选项卡时,拖放将停止工作。
这段代码再现了在“文本”选项卡中拖动标签时出现的问题:
public class TabbedPaneSample {
public static void main(String[] args) {
Browser browser = new Browser(BrowserType.HEAVYWEIGHT);
JLabel label = new JLabel("Label Text");
label.setTransferHandler(new TransferHandler("text"));
label.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
JComponent comp = (JComponent) evt.getSource();
TransferHandler th = comp.getTransferHandler();
th.exportAsDrag(comp, evt, TransferHandler.COPY);
}
});
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("Browser", new BrowserView(browser));
tabbedPane.addTab("Text", label);
JFrame frame = new JFrame();
frame.getContentPane().add(tabbedPane, BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
browser.loadURL("https://www.google.com");
}
}
将
BrowserType.HEAVYWEIGHT
更改为BrowserType.LIGHTWEIGHT
会使其工作。我能设法解决这个问题吗?
最佳答案
不幸的是,目前在jxbrowser的重量级模式下,拖放在linux上不起作用。我们已经有一个关于此的打开的任务,将在未来的jxbrowser版本中实现此功能。
现在,作为一种解决方法,我建议您尝试一种轻量级模式,因为在Linux上拖放应该在这种模式下工作。
至于轻量级模式比重量级模式慢,也许你可以尝试一种加速轻量级模式,它大约快30%:https://jxbrowser.support.teamdev.com/support/solutions/articles/9000104965-accelerated-lightweight-rendering