/ / मेरे जावा जीयूआई - जावा, यूजर-इंटरफेस, लिंक्ड-लिस्ट के साथ लिंक्डलिस्ट और कई वर्गों का उपयोग कैसे करें

मेरे जावा GUI - जावा, यूजर-इंटरफेस, लिंक्ड-लिस्ट के साथ लिंक्डलिस्ट और कई वर्गों का उपयोग कैसे करें

मुझे अपने GUI के साथ लिंक की गई सूची का उपयोग कैसे करना चाहिएकार्यक्रम? इस कार्यक्रम में textareas और ड्रॉपडाउन मेनू के साथ ब्लॉक (JPanel होने वाला एक ब्लॉक) होना चाहिए। ब्लॉक की संख्या उपयोगकर्ता द्वारा एक बटन दबाने की संख्या पर निर्भर करती है। यह ब्लॉक के भीतर ब्लॉक लगाने के लिए संभव होना चाहिए। मैं बनाई गई जानकारी को स्टोर करना चाहता हूं, एक लिंक की गई सूची का उपयोग करके और फिर एक फ़ाइल के लिए। मैं सोच रहा हूं, सब ब्लॉक के लिए, लिंक के भीतर लिंक की गई सूची होगी। सूची। क्या मुझे Java.util.LinkedList का उपयोग करना चाहिए? मैं जानकारी कैसे जोड़ूं? एक नोड वर्ग? क्या यह एक अलग फाइल में होना चाहिए? मैं एक जुड़ी हुई सूची में बैठने की कोशिश करने लगा, लेकिन यह मुझे भ्रमित कर रहा है।

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

मुझे शायद यहाँ एक टन कोड पेस्ट नहीं करना चाहिए ... ये मेरी फाइलें हैं: http://asj127.webs.com/BuildAssessmentWindow.java http://asj127.webs.com/QuestionBlock.java http://asj127.webs.com/JPanelTools.java

उत्तर:

जवाब के लिए 0 № 1

मुझे लगता है कि आपको डेटा मॉडल को gui से अलग करना चाहिए, और हां, ListNode1 वर्ग में एक सूची (LinkedList या ArrayList) जोड़ें:

public class ListNode1 implements java.io.Serializable {
private String num;
private String questionText;
private String answerText;
private List<ListNode1> subNodes = new LinkedList<ListNode>();
...
public List<ListNode1> getSubNodes() {
return subNodes;
}

public void addSubNode(ListNode1 subNode) {
subNodes.add(subNode);
}

public void removeSubNode(ListNode1 subNode) {
subNodes.remove(subNode);
}
}

ध्यान दें कि मैंने कक्षा को क्रमबद्ध बना दिया है ताकि आप इसे आसानी से सहेज सकें या फ़ाइल से पढ़ सकें।

यह संरचना वास्तव में एक एन-एरी ट्री (या वन) है।

Gui स्तर पर, सूची का उपयोग करना बेमानी होगाक्योंकि एक कंटेनर जैसे JPanel में पहले से ही सभी घटकों की सूची समाहित है, इसलिए आप सभी उप-नोड्स के QuestionBlock के होल्ड करने के लिए JPanel का उपयोग कर सकते हैं।

मैं एक सूची के बजाय एक QuestionBlock को एक ListNode1 से लिंक करूंगा:

public class QuestionBlock extends JPanel {
private JPanel container;
private JComboBox numberDropDown, answerDropDown;
private JTextArea question;
private ListNode1 node;

public QuestionBlock(ListNode1 node)
{
super(new FlowLayout());
//setLocation(new Point(0, 0));
setVisible(true);
//setSize(800, 610);
//setBackground(new Color(0, 0, 0));
this.node=node;
createGUI();
}

public void createGUI()
{
container = new JPanel();
container.setLayout(new BorderLayout());

numberDropDown = new JComboBox();
numberDropDown.addItem("1.");
numberDropDown.addItem("a.");
container.add(panelTools.addThisComponent(numberDropDown), BorderLayout.LINE_START);

questionsBlock = panelTools.addNewJPanel();
questionsBlock.setLayout(new BorderLayout());

question = new JTextArea(4, 30);
question.setText(node.getQuestionText);
question.setBackground(new Color(250, 250, 250)); //light gray color for noticeability
questionsBlock.add(panelTools.addThisComponent(question), BorderLayout.PAGE_START);

answerDropDown = new JComboBox();
answerDropDown.addItem("--Select--");
answerDropDown.addItem("SubQuestion");
questionsBlock.add(panelTools.addThisComponent(answerDropDown), BorderLayout.PAGE_END);

container.add(questionsBlock, BorderLayout.CENTER);
add(container);
for (ListNode1 subNode: node.getSubNodes()) {
add(new QuestionBlock());
}
}
}

आपको उत्तरों को सहेजने के लिए भी एक विधि की आवश्यकता होगी:

public void saveAnswers() {
node.setAnswerText((String)answerDropDown.getSelectedItem());
for (Component comp: getComponents()) {
if (comp instanceof QuestionBlock) {
((QuestionBlock)comp).saveAnswers();
}
}
}