के लिए पूर्ववत और फिर से उपयोग करना मैं जावा स्विंग का उपयोग कर एक टेक्स्ट एडिटर बना रहा हूं। मैं इसके लिए JTextArea का उपयोग कर रहा हूं। मैं जानना चाहता हूं कि मैं JTextArea में पूर्ववत और फिर से कार्यक्षमता का उपयोग कैसे कर सकता हूं क्योंकि मैं इसका उपयोग करने में सक्षम नहीं हूं।JTextArea
उत्तर
जैसा कि मैं इसे समझता हूं, JTextArea में अंतर्निहित पूर्ववत/पुनः कार्यक्षमता नहीं है, लेकिन Google search को this article मिला जो उपयोगी हो सकता है।
वहां Undo Managerjavax.swing
में स्पष्ट रूप से मौजूद है, जिसे आप JTextArea की परिवर्तन घटनाओं तक जोड़ सकते हैं।
इसके थोड़ी देर गया है, क्योंकि मैं इस किया था और मैं विवरण याद नहीं है, लेकिन यहाँ कुछ जानकारी के साथ एक लिंक है: http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html
शीर्षक वाले भाग पर स्क्रॉल "एक दस्तावेज़ पर परिवर्तन के लिए सुनकर" आरंभ करने के लिए ।
+1, जो व्यक्ति इसे डाउनवॉटेड करता है ?? ट्यूटोरियल में एक कामकाजी उदाहरण है और यह बताता है कि क्या हो रहा है, जो निश्चित रूप से प्रश्न का उत्तर देता है। अब यह ट्यूटोरियल पढ़ने के लिए ओपी पर निर्भर है, असल में ओपी को इस प्रश्न को पोस्ट करने से पहले ट्यूटोरियल पढ़ना चाहिए था। असल में, अगर उपयोगकर्ता को स्विंग ट्यूटोरियल से अवगत नहीं था, तो उन्हें पता चलने से पहले कि वे एक मूल्यवान संदर्भ तक पहुंच सकते हैं जो भविष्य के सवालों पर मदद कर सकता है। इस तरह सभी सवालों का जवाब दिया जाना चाहिए। – camickr
आपके तरह के शब्दों के लिए धन्यवाद :) –
आपके उपहासपूर्ण टिप्पणी कैमिकर के लिए धन्यवाद। मार्शल की सहायता के लिए धन्यवाद। – Logan
आप इस
UndoManager manager = new UndoManager();
textArea.getDocument().addUndoableEditListener(manager);
की तरह कर सकते हैं एक बार प्रबंधक JTextArea के दस्तावेज़ से जुड़ा हुआ है, यह सब पाठ क्षेत्र की सामग्री को किए गए परिवर्तन निगरानी करेंगे।
पाठ घटक को प्रबंधक को जोड़ने के बाद, आपको प्रबंधक को ऑपरेशन को पूर्ववत/दोबारा करने के लिए कुछ साधन प्रदान करना होगा।
कॉल सार्वजनिक शून्य पूर्ववत() और सार्वजनिक शून्य फिर से करें() UndoManager जहां आवश्यक (उदा। ActionPerformed() एक ActionListener की विधि)
आप कार्रवाई संलग्न कर सकते हैं निम्नलिखित तरीके से एक बटन के लिए वस्तुओं की विधि बजाय() पूर्ववत करें या फिर बुला() पद्धतियों जो कार्य को सरल की:
JButton undoButton = new JButton(UndoManagerHelper.getUndoAction(manager));
JButton redoButton = new JButton(UndoManagerHelper.getRedoAction(manager));
मैं सिर्फ पर्याप्त मदद पाने के लिए अनेक लिंक द्वारा जाना पड़ा। मैं यहां जोड़ रहा हूं कि मैंने भविष्य के आगंतुकों की सहायता के लिए सफलतापूर्वक क्या कार्यान्वित किया। मैंने इसे JTextPane का उपयोग करके कार्यान्वित किया है, लेकिन मुझे लगता है कि यह JTextArea
JTextArea textArea = new JTextArea();
JButton undo = new JButton("Undo");
JButton redo = new JButton("Redo");
KeyStroke undoKeyStroke = KeyStroke.getKeyStroke(
KeyEvent.VK_Z, Event.CTRL_MASK);
KeyStroke redoKeyStroke = KeyStroke.getKeyStroke(
KeyEvent.VK_Y, Event.CTRL_MASK);
UndoManager undoManager = new UndoManager();
Document document = textArea.getDocument();
document.addUndoableEditListener(new UndoableEditListener() {
@Override
public void undoableEditHappened(UndoableEditEvent e) {
undoManager.addEdit(e.getEdit());
}
});
// Add ActionListeners
undo.addActionListener((ActionEvent e) -> {
try {
undoManager.undo();
} catch (CannotUndoException cue) {}
});
redo.addActionListener((ActionEvent e) -> {
try {
undoManager.redo();
} catch (CannotRedoException cre) {}
});
// Map undo action
textArea.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(undoKeyStroke, "undoKeyStroke");
textArea.getActionMap().put("undoKeyStroke", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
try {
undoManager.undo();
} catch (CannotUndoException cue) {}
}
});
// Map redo action
textArea.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(redoKeyStroke, "redoKeyStroke");
textArea.getActionMap().put("redoKeyStroke", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
try {
undoManager.redo();
} catch (CannotRedoException cre) {}
}
});
- 1. JtextArea
- 2. JTextArea
- 3. JTextArea
- 4. JTextArea
- 5. JTextArea
- 6. जावा - JTextArea
- 7. जावा - JTextArea
- 8. जावा लॉग ==> JTextArea
- 9. JTextArea/JTextComponent setText क्रैश
- 10. एक JTextArea या JTextPane
- 11. JTextArea में लाइन-स्पेसिंग
- 12. JTextArea में मार्जिन जोड़ना?
- 13. JTextArea शब्द रैप आकार बदलना
- 14. JTextArea निरंतर आकार कैसे रखें?
- 15. स्क्रोल करने योग्य JTextArea (जावा)
- 16. जावा में यूनिकोड प्रदर्शित करना JTextArea
- 17. टेक्स्ट पर JTextArea और JTextField आंतरिक पैडिंग
- 18. मैं JTextArea में वर्तनी जांच कैसे जोड़ूं?
- 19. JTextArea shift + पर नई लाइन प्रवेश
- 20. जावा स्विंग - JTextArea को कैसे स्क्रॉल करें?
- 21. JTextArea के अंदर एक विशिष्ट पाठ के लिए ActionListener?
- 22. JTextArea के दाएं से बाएं (जॉक्शनपेन के अंदर)
- 23. JTextArea शो के दौरान कैरेट दिखाएं संपादन योग्य है
- 24. प्रसंस्करण के रूप में JTextArea गतिशील रूप से ताज़ा करें?
- 25. जावा JTextArea जो स्वत: आकार बदलता है और
- 26. फेसबुक में JTextArea के अंदर एक जेलाबेल कैसे बनाएं?
- 27. एक JTextArea या JTextPane में केंद्रित टेक्स्ट - क्षैतिज पाठ संरेखण
- 28. MigLayout JTextArea सिकुड़ नहीं है जब linewrap के साथ प्रयोग किया = सच
- 29. JTextArea में लाइनों की संख्या को सीमित करने के लिए कैसे?
- 30. जावा स्विंग में jtextarea के शीर्ष पर नई लाइन डालने या जोड़ने के लिए कैसे?
यहां एक पूर्ण उदाहरण के साथ एक लिंक है: http://www.java-forums.org/javax-swing/9570-undo-redo-jtextarea.html –
धन्यवाद पीटर। मुझे मेरी समस्या हल हो गई। – Logan
@ पीटर आपके लिंक के पीछे कोड संभाल नहीं करता है जब सभी पाठ का चयन किया जाता है और क्लिपबोर्ड की सामग्री के साथ प्रतिस्थापित किया जाता है। क्या होता है पाठ क्षेत्र को अपनी पूर्व सामग्री के साथ प्रतिस्थापित करने के बजाय खाली किया जाता है। रिप्रो: (1) क्लिपबोर्ड में कुछ डालें, (2) टेक्स्ट एरिया में सभी पात्रों का चयन करें, (3) चयनित सामग्री पर क्लिपबोर्ड पेस्ट करने के लिए^वी दबाएं। मुझे अभी तक पता नहीं है कि क्या हो रहा है लेकिन मुझे पता लगाना है। इस उत्तर में पोस्ट किए गए लिंक के पीछे कोड के लिए भी यही है। मुझे लगता है कि समस्या "पिछली सामग्री" की परिभाषा है। – jeff6times7