मेरे पास 2 स्विंग कक्षाएं हैं जो JFrame
फैली हुई हैं। दोनों में कन्स्ट्रक्टर में show()
विधि है। ClassOne
से मैंने बटन क्लिक ईवेंट पर ClassTwo
new ClassTwo()
कहा। लेकिन अगर मैं बटन दबाता हूं तो ClassTwo
के लिए नई विंडो खोली जाती है। तो यदि कक्षा एक दो विंडो खोला गया है तो मैं कक्षा दो विंडो खोलना बंद कर सकता हूं?स्विंग एपीआई का उपयोग करके डुप्लिकेट विंडो खोलने को कैसे रोकें?
संपादित
अब इस समस्या का समाधान है, लेकिन अब जब मैं पहली बार खुला ClassTwo खिड़की यह एक खिड़की को दर्शाता है। फिर इसे बंद करने के बाद जब मैं कक्षा दो खिड़की खोलता हूं तो यह दो खिड़की खुलता है और यह गिनती बढ़ती रहती है। यह क्यों हो रहा है?
संपादित 2
मैंने पाया कि इसकी समस्या लेकिन Samck एपीआई के MultiUsreChat वर्ग से अपनी समस्या स्विंग नहीं। तो जिसने इस पर काम किया है, मेरी मदद करो।
ClassOne में कोड है:
if(!winList.contains(room_jid)){
new ClassTwo(room_jid,....);
winList.add(room_jid);
}
और ClassTwo में है:
public ClassTwo(....){
......
this.muc = new MultiUserChat(connection, room_jid);
if(!muc.isJoined())
muc.join(this.user_id); //---- This line opens previously closed window.
.....
if(!isVisible())
show();
}
संपादित 3
classone के निर्माता
public ClassOne(){
JButton btn = new JButton("Open");
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!winList.contains(room_jid)){
new ClassTwo(room_jid,....);
winList.add(room_jid);
}
}
});
}
@Kdansky: यह समाधान मेरे लिए उपयोगी नहीं है क्योंकि मैं एक ही समय में कई क्लास दो खिड़कियां खोलना चाहता हूं। इसलिए जब भी मैं बटन पर क्लिक करता हूं तो मुझे नया उदाहरण बनाना होगा। –
आपने लिखा "तो यदि क्लास दो विंडो खोला गया है तो मैं कक्षा दो विंडो खोलना बंद कर सकता हूं?"। कृपया स्पष्ट करें। –
@Kdansky: यह मेरा प्रश्न था जिसे हल किया गया था लेकिन अगला सवाल यह है कि यह पहले बंद खिड़कियां खोल रहा है। मेरा 'संपादित करें' देखें। –