2009-10-26 37 views
21

मैंने एक स्विंग एप्लिकेशन बनाया है और जीयूआई पर "स्टार्ट" बटन है। मैं चाहता हूं कि जब भी मैं उस "स्टार्ट" बटन पर क्लिक करता हूं, तो स्टार्ट बटन अक्षम होना चाहिए और "स्टॉप" बटन सक्षम होना चाहिए।जावा में javax.swing.JButton को कैसे अक्षम करें?

है कि मैं "ActionPeformed (...)" "शुरू" बटन

startButton.setEnabled(false); 
stopButton.setEnabled(true); 

की विधि लेकिन इसके बाद के संस्करण कोड नहीं बना रहा है वांछित जीयूआई पर प्रभावित कर में निम्न कोड में लिखा है के लिए

क्या उपरोक्त कोड मैं जो करना चाहता हूं उसके लिए सही है?

यह "repaint()" के साथ भी काम नहीं कर रहा है।

संपादित करें:

कोड बहुत लंबा है इसलिए मैं सभी कोड पेस्ट नहीं कर सकते। हालांकि, मैं कोड के बारे में और बता सकता हूं।

उपरोक्त दो कथनों को कॉल करने के बाद, "स्टार्ट" बटन की "एक्शनप्रोफर्ड" विधि में, मैं "स्विंगवर्कर" थ्रेड निष्पादित कर रहा हूं।

क्या यह धागा कोई समस्या पैदा कर रहा है?

+2

उपर्युक्त काम करना चाहिए, और आपको repaint() को कॉल करने की आवश्यकता नहीं है, क्या आप अपने तर्क में अधिक कोड पोस्ट कर सकते हैं। – broschb

+0

एक और संभावना स्टार्ट बटन का उपयोग स्टॉप बटन (आपकी ज़रूरतों पर निर्भर करता है) के रूप में भी करना होगा, यह वर्तमान स्थिति को बचाने और बस टेक्स्ट बदलने के लिए पर्याप्त है। – svens

उत्तर

19

है कि मैं "ActionPeformed (...)" "शुरू" बटन

आपको लगता है कि कोड की जरूरत ActionListener की actionPerformed(...) पंजीकृत में होना करने की विधि में निम्नलिखित कोड लिखा है के लिए स्टार्ट बटन के साथ, स्टार्ट बटन के लिए नहीं।

आप एक सरल ActionListener इस तरह जोड़ सकते हैं:

JButton startButton = new JButton("Start"); 
startButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent ae) { 
     startButton.setEnabled(false); 
     stopButton.setEnabled(true); 
    } 
    } 
); 

नोट करें कि आपके startButton ऊपर ऊपर के उदाहरण में final होने की आवश्यकता होगी आप स्थानीय दायरे में गुमनाम श्रोता बनाना चाहते हैं।

+0

मुझे पता है कि पहले से ही और सही क्रिया में वही कर रहा हूं। प्रारूपित विधि ... lol –

+0

क्षमा करें, बस मदद करने की कोशिश कर रहा है। – akf

+0

आपने कभी स्टॉपबटन –

3

यह काम करता है।

public class TestButton { 

public TestButton() { 
    JFrame f = new JFrame(); 
    f.setSize(new Dimension(200,200)); 
    JPanel p = new JPanel(); 
    p.setLayout(new FlowLayout()); 

    final JButton stop = new JButton("Stop"); 
    final JButton start = new JButton("Start"); 
    p.add(start); 
    p.add(stop); 
    f.getContentPane().add(p); 
    stop.setEnabled(false); 
    stop.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      start.setEnabled(true); 
      stop.setEnabled(false); 

     } 
    }); 

    start.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      start.setEnabled(false); 
      stop.setEnabled(true); 

     } 
    }); 
    f.setVisible(true); 
} 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    new TestButton(); 

} 

}

7

कोड बहुत लंबा है तो मैं सभी कोड पेस्ट नहीं कर सकते।

आपका कोड काम नहीं करता है, इसके कई कारण हो सकते हैं। हो सकता है कि आपने दो बार बटन वैरिएबल घोषित कर दिया है, इसलिए आप वास्तव में बटन को सक्षम/अक्षम नहीं कर रहे हैं जैसे आप सोचते हैं कि आप हैं। शायद आप ईडीटी को अवरुद्ध कर रहे हैं।

आपको मंच पर पोस्ट करने के लिए SSCCE बनाने की आवश्यकता है।

तो यह समस्या को अलग करने के लिए आप पर निर्भर है। दो बटनों के साथ एक साधारण फ्रेम के साथ शुरू करें और देखें कि आपका कोड काम करता है या नहीं। एक बार जब आप इसे काम कर लेते हैं, तो एक थ्रेड शुरू करने का प्रयास करें जो कि यह देखने के लिए कि क्या यह अभी भी काम करता है, बस 10 सेकंड तक सोता है।

जानें कि 200 लाइन प्रोग्राम लिखने से पहले बेसिस पहले कैसे काम करती है।

जानें कि कुछ बुनियादी डिबगिंग कैसे करें, हम दिमागी पाठक नहीं हैं। हम अनुमान नहीं लगा सकते कि आप समस्या के मौखिक विवरण के आधार पर क्या मूर्खतापूर्ण गलती कर रहे हैं।

+2

को परिभाषित नहीं किया है, क्या आप चाहते हैं कि यह चम्मच आपको खिलाए? आप मदद चाहते हैं, लेकिन जब आप स्पष्ट नहीं थे तो डाउनवोट सहायता प्राप्त हुई। मैंने बनाया और उदाहरण नीचे दिया, लेकिन बटन प्रेस पर एक स्विंगवर्कर कहा जाता है, और यह मेरे उदाहरण में ठीक काम करता है। काम करने वाली चीज़ों के साथ छोटे से शुरू करें और जो भी आप चाहते हैं उसका निर्माण करें। – broschb

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