全部代码在这里阿,请大家看看//MenuDemo.java
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Terminal extends JFrame
{
JMenuBar menu=new JMenuBar();
JMenu mnuFile=new JMenu("文件");
JMenu mnuEdit=new JMenu("编辑");
JMenu mnuSet =new JMenu("设置");
JMenu mnuHelp=new JMenu("帮助");
JMenuItem mnuFileNew =new JMenuItem("新建");
JMenuItem mnuFileOpen =new JMenuItem("打开");
JMenuItem mnuFileSave =new JMenuItem("保存");
JMenuItem mnuFileSaveAs=new JMenuItem("另存为");
JMenuItem mnuFilePrint =new JMenuItem("打印");
JMenuItem mnuFileExit =new JMenuItem("退出");
JMenuItem mnuCopy =new JMenuItem("复制");
JMenuItem mnuCut =new JMenuItem("剪切");
JMenuItem mnuPaste=new JMenuItem("粘贴");
JMenuItem mnuBackColor=new JMenuItem("背景设置");
JMenuItem mnuFontset =new JMenuItem("字体设置");
JMenuItem mnusubHelp =new JMenuItem("帮助");
JMenuItem mnuAbout =new JMenuItem("关于");
JLabel cmdLabel=new JLabel("命令行:");
JTextArea resArea=new JTextArea(60,20);
JTextField cmdLine1=new JTextField(5);
JTextField cmdLine=new JTextField(44);
JButton cmdButton=new JButton("go");
JPanel cmdPanel=new JPanel();
JScrollPane ps=new JScrollPane();
public Terminal()
{
this("Systemcommand Terminal");
}
public Terminal(String str)
{
super(str);
Container content=getContentPane();
content.setLayout(new BorderLayout());
//添加窗体组件
cmdPanel.add(cmdLabel);
cmdPanel.add(cmdLine1);
cmdPanel.add(cmdLine);
cmdPanel.add(cmdButton);
ps=new JScrollPane(resArea);
content.add(ps,BorderLayout.CENTER);
content.add(cmdPanel,BorderLayout.SOUTH);
//以下是添加菜单命令
this.setJMenuBar(menu);
mnuFile.add(mnuFileNew);
mnuFile.add(mnuFileOpen);
mnuFile.add(mnuFileSave);
mnuFile.add(mnuFileSaveAs);
mnuFile.addSeparator();
mnuFile.add(mnuFilePrint);
mnuFile.add(mnuFileExit);
mnuEdit.add(mnuCopy);
mnuEdit.add(mnuCut);
mnuEdit.add(mnuPaste);
mnuSet.add(mnuBackColor);
mnuSet.add(mnuFontset);
mnuHelp.add(mnusubHelp);
mnuHelp.add(mnuAbout);
menu.add(mnuFile);
menu.add(mnuEdit);
menu.add(mnuSet);
menu.add(mnuHelp);
//开始事件侦听
cmdButton.addActionListener(new cmdb());
cmdLine.addKeyListener(new cmdl());
}
public static void main(String args[])
{
Terminal ter=new Terminal();
ter.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
ter.pack();
ter.show();
}
class cmdb implements ActionListener
{
String strline;
String strarea;
String strres;
PT ptcmd=new PT();
public void actionPerformed(ActionEvent e)
{
cmdLine.selectAll();
resArea.selectAll();
strline=cmdLine.getSelectedText();
strarea=resArea.getSelectedText();
if(strline==null) strline="";
if(strarea==null) strarea="";
try
{
strres=ptcmd.cmd(strline);
}catch(IOException IOE)
{
System.out.println("error");
}
resArea.setText(strres);
System.out.println(strres);
cmdLine.setText("");
}
}
class cmdl implements KeyListener
{
int keycode;
public void keyPressed(KeyEvent e)
{
keycode=e.getKeyCode();
if(keycode==10)
{
cmdLine.addActionListener(new cmdb());
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
}//下面是调用系统命令的函数class PT
{
String strcmd=null;
Runtime r;
Process p;
BufferedReader br=null;
StringBuffer sb=new StringBuffer();
String inline;
String retu;
public String cmd(String str) throws IOException
{
//br=null;
//strcmd=null;
if(str!=null && str!="") strcmd="cmd /c "+str;
if(strcmd!=null)
{
System.out.println(strcmd);
r=Runtime.getRuntime();
p=r.exec(strcmd);
br=new BufferedReader(new InputStreamReader(p.getInputStream()));
while(null!=(inline=br.readLine())){
sb.append(inline).append("\n");
}
retu=sb.toString();
sb=null;
return(retu);
}
else
{
System.out.println(strcmd);
return("111");
}
}
}
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Terminal extends JFrame
{
JMenuBar menu=new JMenuBar();
JMenu mnuFile=new JMenu("文件");
JMenu mnuEdit=new JMenu("编辑");
JMenu mnuSet =new JMenu("设置");
JMenu mnuHelp=new JMenu("帮助");
JMenuItem mnuFileNew =new JMenuItem("新建");
JMenuItem mnuFileOpen =new JMenuItem("打开");
JMenuItem mnuFileSave =new JMenuItem("保存");
JMenuItem mnuFileSaveAs=new JMenuItem("另存为");
JMenuItem mnuFilePrint =new JMenuItem("打印");
JMenuItem mnuFileExit =new JMenuItem("退出");
JMenuItem mnuCopy =new JMenuItem("复制");
JMenuItem mnuCut =new JMenuItem("剪切");
JMenuItem mnuPaste=new JMenuItem("粘贴");
JMenuItem mnuBackColor=new JMenuItem("背景设置");
JMenuItem mnuFontset =new JMenuItem("字体设置");
JMenuItem mnusubHelp =new JMenuItem("帮助");
JMenuItem mnuAbout =new JMenuItem("关于");
JLabel cmdLabel=new JLabel("命令行:");
JTextArea resArea=new JTextArea(60,20);
JTextField cmdLine1=new JTextField(5);
JTextField cmdLine=new JTextField(44);
JButton cmdButton=new JButton("go");
JPanel cmdPanel=new JPanel();
JScrollPane ps=new JScrollPane();
public Terminal()
{
this("Systemcommand Terminal");
}
public Terminal(String str)
{
super(str);
Container content=getContentPane();
content.setLayout(new BorderLayout());
//添加窗体组件
cmdPanel.add(cmdLabel);
cmdPanel.add(cmdLine1);
cmdPanel.add(cmdLine);
cmdPanel.add(cmdButton);
ps=new JScrollPane(resArea);
content.add(ps,BorderLayout.CENTER);
content.add(cmdPanel,BorderLayout.SOUTH);
//以下是添加菜单命令
this.setJMenuBar(menu);
mnuFile.add(mnuFileNew);
mnuFile.add(mnuFileOpen);
mnuFile.add(mnuFileSave);
mnuFile.add(mnuFileSaveAs);
mnuFile.addSeparator();
mnuFile.add(mnuFilePrint);
mnuFile.add(mnuFileExit);
mnuEdit.add(mnuCopy);
mnuEdit.add(mnuCut);
mnuEdit.add(mnuPaste);
mnuSet.add(mnuBackColor);
mnuSet.add(mnuFontset);
mnuHelp.add(mnusubHelp);
mnuHelp.add(mnuAbout);
menu.add(mnuFile);
menu.add(mnuEdit);
menu.add(mnuSet);
menu.add(mnuHelp);
//开始事件侦听
cmdButton.addActionListener(new cmdb());
cmdLine.addKeyListener(new cmdl());
}
public static void main(String args[])
{
Terminal ter=new Terminal();
ter.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
ter.pack();
ter.show();
}
class cmdb implements ActionListener
{
String strline;
String strarea;
String strres;
PT ptcmd=new PT();
public void actionPerformed(ActionEvent e)
{
cmdLine.selectAll();
resArea.selectAll();
strline=cmdLine.getSelectedText();
strarea=resArea.getSelectedText();
if(strline==null) strline="";
if(strarea==null) strarea="";
try
{
strres=ptcmd.cmd(strline);
}catch(IOException IOE)
{
System.out.println("error");
}
resArea.setText(strres);
System.out.println(strres);
cmdLine.setText("");
}
}
class cmdl implements KeyListener
{
int keycode;
public void keyPressed(KeyEvent e)
{
keycode=e.getKeyCode();
if(keycode==10)
{
cmdLine.addActionListener(new cmdb());
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
}//下面是调用系统命令的函数class PT
{
String strcmd=null;
Runtime r;
Process p;
BufferedReader br=null;
StringBuffer sb=new StringBuffer();
String inline;
String retu;
public String cmd(String str) throws IOException
{
//br=null;
//strcmd=null;
if(str!=null && str!="") strcmd="cmd /c "+str;
if(strcmd!=null)
{
System.out.println(strcmd);
r=Runtime.getRuntime();
p=r.exec(strcmd);
br=new BufferedReader(new InputStreamReader(p.getInputStream()));
while(null!=(inline=br.readLine())){
sb.append(inline).append("\n");
}
retu=sb.toString();
sb=null;
return(retu);
}
else
{
System.out.println(strcmd);
return("111");
}
}
}
{
int keycode;
public void keyPressed(KeyEvent e)
{
keycode=e.getKeyCode();
if(keycode==10)
{
cmdLine.addActionListener(new cmdb()); //一个回车就会加一个cmdb(),所以有那种错误。把cmdb()中的内容放到这就可以了。
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
E:\
E:\
E:\
这是系统终端的
E:\Before Set E:\After Set E:\E:\
E:\Before Set E:\
E:\After Set E:\
E:\E:\
E:\
E:\Before Set E:\
E:\
E:\After Set E:\
E:\
E:\不觉得有任何奇怪啊,不知你想说什么,这是我改成我得习惯后的代码:
//MenuDemo.java
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Terminal extends JFrame {
JMenuBar menu=new JMenuBar();
JMenu mnuFile=new JMenu("Îļþ");
JMenu mnuEdit=new JMenu("±à¼­");
JMenu mnuSet =new JMenu("ÉèÖÃ");
JMenu mnuHelp=new JMenu("°ïÖú");
JMenuItem mnuFileNew =new JMenuItem("н¨");
JMenuItem mnuFileOpen =new JMenuItem("´ò¿ª");
JMenuItem mnuFileSave =new JMenuItem("±£´æ");
JMenuItem mnuFileSaveAs=new JMenuItem("Áí´æΪ");
JMenuItem mnuFilePrint =new JMenuItem("´òÓ¡");
JMenuItem mnuFileExit =new JMenuItem("Í˳ö");
JMenuItem mnuCopy =new JMenuItem("¸´ÖÆ");
JMenuItem mnuCut =new JMenuItem("¼ôÇÐ");
JMenuItem mnuPaste=new JMenuItem("Õ³Ìù");
JMenuItem mnuBackColor=new JMenuItem("±³¾°ÉèÖÃ");
JMenuItem mnuFontset =new JMenuItem("×ÖÌåÉèÖÃ");
JMenuItem mnusubHelp =new JMenuItem("°ïÖú");
JMenuItem mnuAbout =new JMenuItem("¹ØÓÚ");
JLabel cmdLabel=new JLabel("ÃüÁîÐÐ:");
JTextArea resArea=new JTextArea(15,20);
JTextField cmdLine1=new JTextField(5);
JTextField cmdLine=new JTextField(35);
JButton cmdButton=new JButton("go");
JPanel cmdPanel=new JPanel();
JScrollPane ps=new JScrollPane(); public Terminal() {
this("Systemcommand Terminal");
}
public Terminal(String str) {
super(str);
Container content=getContentPane();
content.setLayout(new BorderLayout());
//Ìí¼Ó´°Ìå×é¼þ
cmdPanel.add(cmdLabel);
cmdPanel.add(cmdLine1);
cmdPanel.add(cmdLine);
cmdPanel.add(cmdButton);
ps=new JScrollPane(resArea);
content.add(ps,BorderLayout.CENTER);
content.add(cmdPanel,BorderLayout.SOUTH);
//ÒÔÏÂÊÇÌí¼Ó²Ëµ¥ÃüÁî
this.setJMenuBar(menu);
mnuFile.add(mnuFileNew);
mnuFile.add(mnuFileOpen);
mnuFile.add(mnuFileSave);
mnuFile.add(mnuFileSaveAs);
mnuFile.addSeparator();
mnuFile.add(mnuFilePrint);
mnuFile.add(mnuFileExit);
mnuEdit.add(mnuCopy);
mnuEdit.add(mnuCut);
mnuEdit.add(mnuPaste);
mnuSet.add(mnuBackColor);
mnuSet.add(mnuFontset);
mnuHelp.add(mnusubHelp);
mnuHelp.add(mnuAbout);
menu.add(mnuFile);
menu.add(mnuEdit);
menu.add(mnuSet);
menu.add(mnuHelp);
//¿ªÊ¼Ê¼þÕìÌý
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); cmdButton.addActionListener(new CmdProccessor());
cmdLine.addKeyListener(new CmdLine());
}
class CmdProccessor implements ActionListener {
String strLine;
String strArea;
String strRes;
PT ptcmd=new PT();
public void actionPerformed(ActionEvent e) {
cmdLine.selectAll();
resArea.selectAll();
strLine=cmdLine.getSelectedText();
strArea=resArea.getSelectedText();
if(strLine==null) strLine="";
if(strArea==null) strArea="";
try {
strRes=ptcmd.cmd(strLine);
} catch(IOException IOE) {
System.out.println("error");
}
System.out.println("Before Set "+strRes);
resArea.setText(strRes);
System.out.println("After Set "+strRes);
cmdLine.setText("");
}
}
class CmdLine implements KeyListener {
public void keyPressed(KeyEvent e) {
int keycode=e.getKeyCode();
if(keycode==10) {
cmdLine.addActionListener(new CmdProccessor());
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
} public static void main(String args[]) {
Terminal ter=new Terminal();
ter.pack();
ter.show();
}
}//ÏÂÃæÊǵ÷ÓÃϵͳÃüÁîµÄº¯Êý
class PT {
String strCmd=null;
Process p;
BufferedReader br=null;
StringBuffer sb=new StringBuffer();
String inLine;
public String cmd(String str) throws IOException {
//br=null;
//strCmd=null;
if(str!=null && str!="") strCmd="cmd /c "+str;
if(strCmd!=null) {
// System.out.println(strCmd);
p=Runtime.getRuntime().exec(strCmd);
br=new BufferedReader(new InputStreamReader(p.getInputStream()));
while(null!=(inLine=br.readLine())) {
sb.append(inLine).append("\n");
}
System.out.println(sb.toString());
return(sb.toString());
} else {
System.out.println(strCmd);
return("111");
}
}
}
class PT {
public String cmd(String str) throws IOException {
String strCmd=null; if(str!=null && str!="") strCmd="cmd /c "+str;
if(strCmd!=null) {
// System.out.println(strCmd);
Process p=Runtime.getRuntime().exec(strCmd);
StringBuffer sb=new StringBuffer();
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String inLine=null;
while(null!=(inLine=br.readLine())) {
sb.append(inLine).append("\n");
}
System.out.println(p);
return(sb.toString());
} else {
System.out.println(strCmd);
return("111");
}
}
}
1.Listener是一直存在的(除非你用remove***Listener注销),所以第二次add的时候第一个Listener还在,两个就会同时起作用。
2.我试过,正常的。不过PT类最好用Iforgot(清风雨) 的。