Tôi đã xây dựng một trò chơi GUI nhỏ trong java và tại một số điểm tôi đang sử dụng glassPane để tạm thời chặn tất cả các thông tin đầu vào. Tôi đã sử dụng glassPane trước đó mà không có bất kỳ vấn đề gì nhưng lần này nó sẽ không chặn đầu vào của chuột. Vì vậy, tôi vẫn có thể nhấn một nút nằm trên contentPane trong khi glassPane được kích hoạt, tôi chắc chắn rằng nó được kích hoạt bởi vì tôi có thể nhìn thấy những thứ tôi vẽ trên đó.glassPane không chặn đầu vào
Đây là một đoạn mã ngắn Runnable đó cho thấy vấn đề:
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);
}
}
+1 cho [SSCCE] (http://sscce.org/) – AbdullahC