मैं आंतरिक कक्षाओं के साथ मानक अभ्यास के बारे में सोच रहा हूं (जावा में लेकिन मुझे लगता है कि यह सभी ओओ भाषाओं पर लागू होता है)। तो मेरे पास एक जेएफआरएएम सबक्लास ControllerWindow
है जिसमें एक जेपीनल सबक्लास MapPanel
है जिसे मैं आकर्षित करता हूं (इसलिए इसे पेंटकंपोनेंट विधि को ओवरराइट करने की आवश्यकता है) और जिसे माउस श्रोता को कार्यान्वित करने की आवश्यकता होती है। मेरा वर्तमान समाधान जो काम करता है MapPanel
को एक अलग वर्ग में माउसलिस्टर लागू करने के लिए है, लेकिन जब मैंने इसे उस व्यक्ति को दिखाया जो मेरा कोर्स चलाता है तो दूसरे दिन वह सोचता था (हमारे पास भाषा बाधा है) यह एक आंतरिक में होना चाहिए ControllerWindow
में कक्षा या कम से कम माउस लिस्टर एक आंतरिक वर्ग होना चाहिए।जीयूआई के लिए आंतरिक कक्षाओं का उपयोग करने के लिए मानक?
तो मेरा सवाल यह है कि यहां एक मानक समाधान होगा, माउस क्लाइस्टर को आंतरिक कक्षा में, जेपीनेल को एक अलग आंतरिक कक्षा में या फिर भी अपनी अलग कक्षा में डालने के लिए? जेपीनेल एक आंतरिक वर्ग में माउसलिस्टर को कार्यान्वित कर रहा है? और क्यों?
मेरे लिए सबसे महत्वपूर्ण बात यह है कि यह काम करता है लेकिन यदि संभव हो तो मैं इन चीजों के पीछे मानक प्रथाओं के बारे में जानना और समझना चाहता हूं।
संपादित करें: नीचे दिए गए वर्तमान कोड का बहुत सरल संस्करण।
class ControllerWindow extends JFrame{
...
MapPanel drawPanel = new MapPanel();
...
}
और एक अलग वर्ग:
class MapPanel extends JPanel implements MouseListener{
...
public void paintComponent(Graphics g){
...//fillRects etc.
}
//MouseListener methods
public void mouseReleased(MouseEvent e){
requestFocus();
...
repaint()
...
}
public void mousePressed(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
}
इसके अलावा इस एक स्थिति जहां यह एक ही फाइल में दोनों वर्गों डाल करने के लिए स्वीकार्य होगा हो सकता है? मैं ControllerWindow
के अलावा किसी अन्य चीज़ के लिए MapPanel
का उपयोग करने की परिकल्पना नहीं करता हूं।
जीयूआई कोड के लिए मानक अभ्यास मिट्टी की एक बड़ी गेंद है। –
क्या आप कुछ कोड प्रदान कर सकते हैं? यदि आवश्यक हो तो सरलीकृत। – amorfis