Я использую API-интерфейс Native Swing для использования JWebBrowser.JWebBrowser (расширяет JPanel) Показывает выше стеклянную панель
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);
}
}
Когда я запустил это, я ожидаю увидеть красный прямоугольник по всему графическому интерфейсу. Это не то, что происходит. Это то, что я вижу (извините, это не позволит мне отправлять прямые изображения): http://i.stack.imgur.com/ZAe51.png
Почему JWebBrowser появляется над стеклянным стеклом? Я думал, что Стеклянная панель должна быть ВСЕ.
JWebBrowser расширяет JPanel. Вот документация: Javadoc
Моей целью для этой стеклянной панели является возможность получить положение мыши, когда пользователь использует графический интерфейс пользователя. По какой-то причине позиция мыши возвращает нуль (даже если она находится над компонентом), используя webBrowser.getMousePosition() или webBrowserPanel.getMousePosition().
"потому что вы устанавливаете mainFrame.setGlassPane (glassPane);" не следует ли это ставить стеклянную панель над всем JFrame, то есть стеклянная панель будет над компонентами JFrame? –
@Sam Pepose [вы тоже здесь видите] (http://stackoverflow.com/a/9734016/714968) – mKorbel
Я не понимаю, что вы хотите, чтобы я видел там. –