2011-04-23 13 views
5

मैंने जावा में एक छोटा जीयूआई गेम बनाया है और किसी बिंदु पर मैं सभी माउस इनपुट को अस्थायी रूप से अवरुद्ध करने के लिए ग्लासपेन का उपयोग कर रहा हूं। मैंने बिना किसी समस्या के ग्लासपेन का उपयोग किया है लेकिन इस बार यह माउस इनपुट को अवरुद्ध नहीं करेगा। इसलिए मैं अभी भी एक बटन दबा सकता हूं जो सामग्री प्लेन पर रहता है जबकि ग्लासपेन सक्षम है, मुझे यकीन है कि यह सक्षम है क्योंकि मैं उस सामग्री को देख सकता हूं जिसे मैं पेंट करता हूं।ग्लासपेन इनपुट को अवरुद्ध नहीं कर रहा है

यहाँ runnable कोड है कि एक छोटा-सा समस्या दिखाता है:

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); 
    } 
} 
+2

+1 (http://sscce.org/) – AbdullahC

उत्तर

1

मैं अपने glasspane करने के लिए एक MouseListener जोड़ने की कोशिश करना चाहते हैं, और सभी MouseEvents ऐसे

public void mouseClicked(MouseEvent e) { 
    e.consume(); 
} 
के रूप में, घटना की खपत पर [SSCCE] के लिए
+1

धन्यवाद! काम किया, मुझे 'comsume() 'विधि की भी आवश्यकता नहीं थी। हालांकि यह एक नई समस्या पैदा हुई थी। मेरे पास ग्लासपेन पर एक जेकंबोबॉक्स है और चूंकि मैंने mouselisteners को जोड़ा है, इसलिए मैं सूची के माध्यम से स्क्रॉल नहीं कर सकता या माउस के साथ अब सूची में कुछ चुन सकता हूं। – Jesse

संबंधित मुद्दे