2015-01-09 15 views
5

में अक्षम होने के बाद बटन को सक्षम करने में सक्षम नहीं है मैंने अभी जावा स्विंग सीखना शुरू कर दिया है और मैं एक साधारण गेम बनाने की कोशिश कर रहा हूं। खेल माइन्सवीपर के समान है। केवल एक खान के साथ बोतलों के एक मैट्रिक्स के साथ एक खिड़की। बटन पर क्लिक करने पर, यदि यह मेरा नहीं है, तो मैं बटन को अक्षम करता हूं और हरे रंग का रंग प्रदर्शित करता हूं, और यदि यह एक खदान है तो मैं बटन को अक्षम करता हूं और लाल रंग प्रदर्शित करता हूं। मैंने बटन पृष्ठभूमि को आवश्यक रंग में सेट करके रंग प्रदर्शित किया है। मैंने अभी तक ठीक कार्यान्वयन किया है। अगला मैंने रीसेट बटन जोड़ा, जिस पर मैं उपयोग करके सभी बटन किराए पर लेता हूं: setEnabled (true)।जावा स्विंग

लेकिन किसी कारण से, बटन सक्षम नहीं हो रहा है। मैंने पुष्टि की है कि प्रोग्राम प्रवाह बटन को सक्षम करने के लिए कोड तक पहुंचता है, लेकिन मुझे यह कारण नहीं मिल रहा है कि यह क्यों काम नहीं कर रहा है।

यहां एक परीक्षण कार्यक्रम है जिसे मैंने रीसेट बटन और 1 बटन के साथ लिखा था। वही मुद्दा। क्या कोई यह बता सकता है कि मैं क्या गलत कर सकता हूं?

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 


public class Test implements ActionListener{ 

    JFrame frame = new JFrame("Mine"); 
    JButton buttons = new JButton(); 
    JButton reset = new JButton("Reset"); 
    Container grid = new Container(); 

    public Test(){ 

     frame.setSize(400, 400); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 

     frame.setLayout(new BorderLayout()); 
     frame.add(reset, BorderLayout.NORTH); 
     reset.addActionListener(this); 

     buttons = new JButton(); 
     buttons.addActionListener(this);  

     frame.add(buttons, BorderLayout.CENTER); 
    } 

    public static void main(String[] args){ 

     new Test(); 
    } 

    @Override 
    public void actionPerformed(ActionEvent event) { 

     if(event.getSource().equals(reset)) 
      buttons.setEnabled(true); 

     else{ 
      if(event.getSource()==buttons){ 
       buttons.setBackground(Color.RED); 
       buttons.setEnabled(false); 
      } 

     } 

    } 
} 
+1

बस एक सलाह: यदि आप अपने फ्रेम बनाना चाहिए दिखाई * के बाद * करने के लिए अपने सभी घटकों को जोड़ने इसकी सामग्री फलक। फ्रेम के आकार को पूरी तरह से सेट करने के बजाय, इसे 'पैक()' विधि को दृश्यमान करने से पहले कॉल करें। – dic19

+3

यह सक्षम हो जाता है। आपने पृष्ठभूमि रंग को कभी भी रीसेट नहीं किया है। – kiheru

उत्तर

8

वास्तव में यह है जब आप रीसेट क्लिक करें सक्षम रही है, तुम सब करना भूल गया था रंग रीसेट:

@Override 
public void actionPerformed(ActionEvent event) { 

    if(event.getSource().equals(reset)){ 
     buttons.setEnabled(true); 
     buttons.setBackground(null); 
    }else{ 
     if(event.getSource()==buttons){ 
      System.out.println("xxx"); 
      buttons.setBackground(Color.RED); 
      buttons.setEnabled(false); 
     } 

    } 

} 
+0

हाँ, यह वास्तव में मेरा मुद्दा था। बहुत बहुत धन्यवाद। अब यह ठीक काम कर रहा है। –

+0

कृपया स्वीकृत के रूप में उत्तर की जांच करें। –

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