कुछ समय पहले मैंने जावा के साथ एक छोटा छवि दर्शक/प्रसंस्करण कार्यक्रम लिखा था, एक मिनी-फ़ोटोशॉप, यदि आप करेंगे।जावा आंतरिक कक्षा उपयोग और तत्काल
मैं चाहता था कि वहां एक ड्रॉप-डाउन मेनू हो जहां मैं चुन सकता हूं कि मैंने जो छवियां खोली हैं, वे "टेबल पर" होंगी, यानी। दिखाया गया और तरीकों पर लागू किया गया। मैं चाहता था कि छवि का नाम मेनू में दिखाए गए जेमेनूइटम का नाम हो। जब मैं एक नई छवि जोड़ता हूं तो मैं भी एक नया बटन दिखाना चाहता था।
मैंने कुछ समय के लिए यह आश्चर्यचकित किया और आखिरकार इस समाधान का निर्माण किया, एक नई कक्षा जो एक छवि को जोड़ा जाने पर नए बटन के निर्माण को संभालती है। कोड निम्नानुसार है:
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class ImageList{
private ArrayList<JMenuItem> list;
private ImageHandler main;
private ImageLevel img;
public ImageList() {}
public void setHandler(ImageHandler hand) {
main = hand;
img = main.getImg1();
}
public void add(Buffer addi) {
final String added = addi.getName();
JMenuItem uusi = new JMenuItem(added);
main.getMenu5().add(uusi);
uusi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
img.setBuffer(added);
main.getScr().updateUI();
}
});
}
}
यह इस तरह काम करता है। इस साइट के लिए मैंने मूल फिनिश नामों का अंग्रेजी में अनुवाद किया है, आश्चर्य है कि मैंने उन्हें फिनिश में मूल रूप से क्यों लिखा था ... मैं चीजों का नामकरण करने में चूसता हूं।
प्रोग्राम चल रहा है, जबकि विधि जोड़ने को कई बार कहा जाना चाहिए।
जो मैं समझ नहीं पा रहा हूं वास्तव में इंटरफ़ेस एक्शनलिस्टर का आंतरिक वर्ग कार्यान्वयन है, अर्थात् इसका संकलन और यह कैसे काम करता है।
यदि मेरे पास मेरे इंटरफ़ेस पर दो बटन हैं और मैं उन्हें अलग-अलग चीजें करना चाहता हूं, तो मुझे दो आंतरिक कक्षाएं चाहिए, प्रत्येक के लिए एक, प्रत्येक इंटरफ़ेस एक्शनलिस्टर का आंतरिक कार्यान्वयन करता है। लेकिन मेरे कोड में एक वर्ग है जो कई लोगों का काम करता है, एक अनुपालन। इसके लिए क्लास-फ़ाइल, लेकिन अंतिम परिणाम काम करता है जैसे कि बहुत सारे थे।
क्या कोई मुझे इस मुद्दे पर शिक्षित कर सकता है? क्या यह कोड यहां एक वर्ग है और नए बटन इसके उदाहरण हैं? क्या वे नए वर्ग हैं? क्या प्रत्येक नए बटन के लिए एक नई। क्लास-फ़ाइल होनी चाहिए? आदि ...
पुन:। नामकरण: 'नया' एक आरक्षित शब्द है, इसलिए आपको उस जेएमएनयूइटेम चर के लिए कुछ अलग उपयोग करना चाहिए। – assylias
@ पीटर इसे ठीक करेगा। – Valtteri
ओपी के प्रश्न का उत्तर देने के लिए इस ['FileMenu'] (http://stackoverflow.com/a/4039359/230513) – trashgod