首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glassPane没有阻止输入

glassPane没有阻止输入
EN

Stack Overflow用户
提问于 2011-04-23 09:19:29
回答 1查看 2.5K关注 0票数 6

我用java构建了一个小的图形用户界面游戏,有时我会使用glassPane来暂时阻止所有的鼠标输入。我以前使用过glassPane,没有任何问题,但这次它不会阻塞鼠标输入。因此,当glassPane启用时,我仍然可以按下contentPane上的按钮,我确信它是启用的,因为我可以看到我在上面绘制的内容。

下面是显示问题的一小段可运行代码:

代码语言:javascript
复制
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class GuiGame {

    private JPanel contentPane;
    private JButton button;
    private JFrame frame;
    private JPanel glassPane;
    private Dimension screenSize;

    public static void main(String[] args) {
        GuiGame gui = new GuiGame();
        gui.createGUI();
    }

    public void createGUI()
    {
        frame = new JFrame("BadGuiGame!");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        contentPane = new JPanel();
        contentPane.setPreferredSize(new Dimension(400, 400));
        contentPane.setBackground(Color.WHITE);
        contentPane.setLayout(null);
        frame.setContentPane(contentPane);
        frame.pack();

        glassPane = new JPanel();
        glassPane.setOpaque(false);
        glassPane.setLayout(null);
        JLabel glassLabel = new JLabel("Glass Enabled");
        glassLabel.setBounds(160, 50, 80, 20);
        glassPane.add(glassLabel);
        frame.setGlassPane(glassPane);

        int buttonWidth = frame.getWidth()/2;
        int buttonHeight = frame.getHeight()/4;
        int xButton = (frame.getWidth() - buttonWidth)/2;
        int yButton = frame.getHeight()/2;
        button = new JButton("NEXT LEVEL!");
        button.setFocusable(false);
        button.setEnabled(true);
        button.setBounds(xButton, yButton, buttonWidth, buttonHeight);
        contentPane.add(button);

        int x = (screenSize.width - frame.getWidth())/2;
        int y = (screenSize.height - frame.getHeight())/2;
        frame.setLocation(x, y);
        frame.setVisible(true);
        glassPane.setVisible(true);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-23 10:13:26

我会尝试在您的glasspane中添加一个MouseListener,并在所有MouseEvents上使用该事件,例如

代码语言:javascript
复制
public void  mouseClicked(MouseEvent e) {
    e.consume();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5761472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档