我正在使用 DJ Native Swing API 来使用 JWebBrowser。
public class GUI extends JPanel {
Robot robot;
JComponent glassPane;
public GUI(final Bot bot) {
super(new BorderLayout());
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
JPanel webBrowserPanel = new JPanel(new BorderLayout());
JWebBrowser webBrowser = new JWebBrowser(JWebBrowser.constrainVisibility());
webBrowser.setBarsVisible(false);
webBrowser.setButtonBarVisible(false);
webBrowser.setMenuBarVisible(false);
webBrowser.navigate("http://google.com");
webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
add(webBrowserPanel, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));
final JButton button = new JButton("Start");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (bot.isRunning()) {
button.setText("Start");
} else {
button.setText("Stop");
}
bot.setRunning(!bot.isRunning());
}
});
buttonPanel.add(button, BorderLayout.WEST);
add(buttonPanel, BorderLayout.NORTH);
JFrame mainFrame = new JFrame("Bot");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.getContentPane().add(this, BorderLayout.CENTER);
glassPane = new JComponent()
{
public void paintComponent(Graphics g)
{
g.setColor(new Color(1, 0, 0, 0.5f));
g.fillRect(10, 10, 815, 775);
}
};
glassPane.setSize(815,775);
glassPane.setOpaque(false);
mainFrame.setGlassPane(glassPane);
glassPane.setVisible(true);
mainFrame.setSize(815, 775);
mainFrame.setLocationRelativeTo(null);
mainFrame.setVisible(true);
}
}
当我运行它时,我希望在整个 GUI 上看到一个红色矩形。这不是发生的事情。这是我看到的(对不起,它不会让我直接发布图片):http: //i.stack.imgur.com/ZAe51.png
为什么 JWebBrowser 出现在玻璃窗格上?我认为玻璃窗格应该涵盖一切。
JWebBrowser 扩展了 JPanel。这是文档:Javadoc
我对这个玻璃窗格的目标是能够在用户使用 GUI 时获得鼠标位置。由于某种原因,鼠标位置使用 webBrowser.getMousePosition() 或 webBrowserPanel.getMousePosition() 返回 null(即使它位于组件上方)。