मुझे लगता है कि आपको दो टेक्स्ट घटक, टेक्स्ट-एरिया और टेक्स्ट-फील्ड की आवश्यकता है।
यदि उपयोगकर्ता नीचे टेक्स्ट टेक्स्ट में टेक्स्ट दर्ज करता है, और दर्ज करें, तो पाठ टेक्स्ट-क्षेत्र में स्थानांतरित हो जाता है, जहां यह अब संपादन योग्य नहीं है। फिर प्रसंस्करण होता है, अंततः परिणाम (या गुणक) टेक्स्ट-क्षेत्र में मुद्रित होते हैं, और अगली पंक्ति दर्ज की जा सकती है।
ऊपरी क्षेत्र में JScrollPane
हो सकता है। किसी भी तरह, बफरिंग को संभालना है।
यहाँ एक सरल, पूर्ण और runnable उदाहरण है:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.plaf.ActionMapUIResource;
/**
CmdPrompt
@author Stefan Wagner
@date Mi 25. Apr 17:27:19 CEST 2012
(c) GPLv3
*/
public class CmdPrompt extends JFrame
{
private static final String progname = "CmdPrompt 0.1";
private JTextField input;
private JTextArea history;
public CmdPrompt()
{
super (progname);
JPanel mainpanel = new JPanel();
mainpanel.setLayout (new BorderLayout());
this.getContentPane().add (mainpanel);
input = new JTextField (80);
history = new JTextArea();
mainpanel.add (history, BorderLayout.CENTER);
mainpanel.add (input, BorderLayout.SOUTH);
ActionMap actionMap = new ActionMapUIResource();
actionMap.put ("enter", new AbstractAction() {
@Override
public void actionPerformed (ActionEvent e) {
String cmd = input.getText();
String sofar = history.getText();
history.setText (sofar + "\n> " + cmd + "\n" + processCmd (cmd));
input.setText ("");
}
});
InputMap keyMap = new ComponentInputMap (input);
keyMap.put (KeyStroke.getKeyStroke (KeyEvent.VK_ENTER, 0), "enter");
SwingUtilities.replaceUIActionMap (input, actionMap);
SwingUtilities.replaceUIInputMap (input, JComponent.WHEN_IN_FOCUSED_WINDOW, keyMap);
setSize (400, 400);
setLocation (100, 100);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setVisible (true);
}
private void center()
{
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screen = tk.getScreenSize();
Dimension d = getSize();
setLocation ((screen.width - d.width)/2, (screen.height - d.height)/2);
}
public static String processCmd (String cmd)
{
String arr [] = cmd.split (" ");
if ("rev".equals (arr [0])) {
return reverse (cmd.substring (4));
}
else if ("upp".equals (arr [0])) {
return (cmd.substring (4)).toUpperCase();
}
else if ("low".equals (arr [0])) {
return (cmd.substring (4)).toLowerCase();
}
else if ("help".equals (arr [0])) {
return ("rev, upp, low, help");
}
return "unknown command";
}
public static String reverse (String cmd)
{
return (cmd.length() < 2) ? cmd : reverse (cmd.substring (1)) + cmd.charAt (0);
}
public static void main (final String args [])
{
Runnable runner = new Runnable()
{
public void run()
{
new CmdPrompt();
}
};
EventQueue.invokeLater (runner);
}
}
स्रोत
2012-04-25 11:23:12
कृपया http://stackoverflow.com/questions/1255373/create-a-command-console – krishnakumarp
देखते हैं कि यह BeanShell सिर्फ बात प्रतीत हो रहा है कि मैं बाद में था, लेकिन उदाहरण ठीक से काम नहीं करता प्रतीत होता है। –