2009-08-24 7 views
21

मुझे ncurses जैसी कार्यक्षमता (जैसे मेनू को नेविगेट करना और पूरी स्क्रीन को फिर से निकालना) के साथ एक कंसोल एप्लिकेशन (संभवतः जावा में) को लागू करने की आवश्यकता है।जावा में टेक्स्ट उपयोगकर्ता-इंटरफेस (ncurses-like) कार्यक्षमता प्राप्त करने का सबसे अच्छा तरीका क्या है?

केवल समाधान है कि मैं यह करने के पा सकते हैं अब तक CHARVA ("A Java Windowing Toolkit for Text Terminals"), tuipeer ("A Text User Interface for the Java AWT") और एक बहुत पुराने डॉ डॉब के लेख ("A Text UI for the Java AWT ") कर रहे हैं।

अब तक, चार्वा सबसे अच्छी चीज है जिसे मैं पा सकता हूं लेकिन मुझे जेएनआई का उपयोग करके शाप को लपेटने के बारे में पसंद नहीं है।

क्या ऐसा करने के लिए एडब्ल्यूटी/स्विंग के साथ कोई मानक तरीका है? वहां अन्य विकल्प क्या हैं?

+0

मैंने इसकी जांच कुछ साल पहले देखा और किसी भी अधिक आप से नहीं मिला। मुझे संदेह है कि समस्या यह है कि निम्न-स्तरीय टर्मिनल कार्यक्षमता अत्यधिक प्लेटफार्म-विशिष्ट है - न केवल ओएस स्तर पर बल्कि टर्मिनल एमुलेटर स्तर (VT100, xterm, आदि) पर। मुझे यकीन नहीं है कि मैं उस से निपटने के बारे में भी कैसे जाऊंगा, बिना किसी मूल एपीआई को कर्स (या टर्मकैप/टर्मिनोफो, कम से कम) को लपेटने के बिना, जो पहले से ही इसे सारणीबद्ध करता है। मुझे लगता है कि आप 'System.out' पर कच्चे नियंत्रण वर्णों से बात कर सकते हैं। –

+0

स्टडआउट पर कच्चे नियंत्रण वर्णों से बात करना ठीक है कि यह कैसे शाप करता है, इसलिए यह एक समझदार विचार है, हालांकि काम का एक बड़ा टुकड़ा। – skaffman

+2

जेएनआई के साथ क्या गलत है? मैं चार्वा के साथ जाऊंगा, यह पूरा दिखता है (आईएसएच)। –

उत्तर

0

मेरा मानना ​​है कि Jcurses शाप एपीआई के एक देशी जावा कार्यान्वयन है, मुझे याद है यह कुछ quirks है, लेकिन यह तुम क्या चाहते करने के लिए सक्षम होना चाहिए:

http://sourceforge.net/projects/javacurses/

+0

ऐसा लगता है कि जेएनआई का भी उपयोग करता है – skaffman

+0

यह सात वर्षों में अपडेट नहीं किया गया है, हालांकि ... यह कुछ देशी कोड का उपयोग भी करता है, शायद जेएनआई का उपयोग करना। –

0

java curses (खेद का प्रयास करें यह जेएनआई का उपयोग करता है)। मैंने जेएनआई सीखने के लिए सिर्फ इस पुस्तकालय के एक लघु संस्करण को लागू करने का प्रयास किया, http://plindenbaum.blogspot.com/2008/01/java-native-interface-jni-notebook.html देखें। एक भी एक विशेष पात्रों में से एक मैट्रिक्स प्रदर्शित JPanel कल्पना कर सकता:

public class TPanel extends JPanel 
{ 
private Vector<Vector<YourCharAndStyle>> rows; 

protected void paintComponent(Graphics g) 
{ 
//paint the characters 
(...) 
} 

} 
1

संक्षिप्त उत्तर शाप के चारों ओर एक जावा आवरण के साथ सौदा है।

विस्तृत उत्तर है:

टर्मिनल एक बहुत है, जिसके कारण terminfo/termcap पुस्तकालयों मौजूद हैं और साथ (उन परियोजनाओं की देखरेख संतों btw कर रहे हैं) से निपटने के लिए एक मेस कारण है कि वे कर रहे हैं बदलती हैं। वे कुछ सच्चाई के लिए सभी वास्तव में बुनियादी टर्मिनल विविधताओं को दूर करते हैं। शापित लोगों को उपयोग करने के लिए अच्छे कुशल पुस्तकालयों में बनाते हैं।

यदि आप शुद्ध जावा समाधान चाहते हैं, तो आपको उन पुस्तकालयों या जावा में उनके समकक्ष दोनों की आवश्यकता होगी। मुझे यकीन है कि अगर कोई अस्तित्व में है तो कोई आपको इंगित करेगा, लेकिन जहां तक ​​मुझे पता है कि यह अस्तित्व में नहीं है।

0

मैं अपने कई कंसोल जावा परियोजनाओं में JavaTUI (http://sourceforge.net/projects/javatui/files/) का उपयोग कर रहा हूं। यह सबसे अच्छा है जो मैं पा सकता हूं लेकिन यह अब तक सही से है। मुझे लगता है कि जावा दुनिया में एक अच्छा टीयूआई अपूर्णता नहीं है।

1

मुझे लगता है कि टीयूआई से अपने जावा कोड को अमूर्त करना बेहतर होगा और वेब-सेवा शैली में अपने आवेदन के कई अलग-अलग हिस्सों या तर्कों का उपयोग करके एनसीआरएस का उपयोग करना बेहतर होगा। उदाहरण के लिए, कोड अपने TUI और जब उपयोगकर्ता कोई ऐसा कार्य कहता है, ncurses का उपयोग अपने कोड कुछ मानकों

java -Daction=doSomething MyApp 

इस तरह आप के मामले में भी एक GUI का उपयोग कर आप की जरूरत है अपने ऐप कोड कर सकते हैं गुजर कॉल करने के लिए।

9

इस समस्या यहां के लिए वोट जाना चाहते हो सकता है: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6351276

अनिवार्य रूप से वहाँ JNI बिना ncurses जैसी कार्यप्रणाली पाने के लिए जब तक इस मुद्दे को संबोधित किया जाता है कोई अच्छा तरीका है।

संबंधित मुद्दे