标题:[求助]怎么在java中模拟dos命令行
只看楼主
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

[CODE]/*
* Test.java
*
* Created on 2006年12月21日, 下午3:53
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package testCMD;
/**
*
* @author lbf
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame implements KeyListener,ActionListener{
private JTextArea content;
private JButton start,exit;
private PrintWriter pw;
private BufferedReader br;
private Process p;
/** Creates a new instance of Test */
public Test() {
initWindow();
}
private void initWindow(){
content=new JTextArea();
start=new JButton("开始");
exit=new JButton("退出");
content.setFont(new Font("宋体",Font.BOLD,15));
JPanel center=new JPanel(new BorderLayout());
JPanel bottom=new JPanel();
center.add(new JScrollPane(content),BorderLayout.CENTER);
bottom.add(start);
bottom.add(exit);
content.addKeyListener(this);
start.addActionListener(this);
exit.addActionListener(this);
Container c=this.getContentPane();
c.add(center,BorderLayout.CENTER);
c.add(bottom,BorderLayout.SOUTH);
this.setSize(500,500);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
if(p!=null){
p.destroy();
}
System.exit(0);
}
});
}


public void keyTyped(KeyEvent e) {

}

public void keyPressed(KeyEvent e) {

}

public void keyReleased(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER){
String s=getInput();
pw.println(s+"\r");
pw.flush();
}
}
private String getInput(){
String input=content.getText();
StringBuffer sb=new StringBuffer(input);
sb.replace(sb.length()-1,sb.length()," ");
int index=sb.lastIndexOf("\n");
String sub=input.substring(index);
return sub;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==start){
start.setEnabled(false);
initCMD();
} else if(e.getSource()==exit){
if(p!=null){
p.destroy();
}
System.exit(0);
}
}
private void initCMD(){
try{
p=Runtime.getRuntime().exec("cmd.exe");
br=new BufferedReader(new InputStreamReader(p.getInputStream()));
pw=new PrintWriter(new OutputStreamWriter(p.getOutputStream()));
new Thread(new Runnable(){
public void run(){
try{
String output="";
while((output=br.readLine())!=null){
content.append(output+"\n");
content.setCaretPosition(content.getText().length());
}
System.exit(0);
} catch(Exception exe){
exe.printStackTrace();
}
}
}).start();
} catch(Exception exe){
exe.printStackTrace();
}
}

public static void main(String[] args)throws Exception {
new Test();
}
}[/CODE]

你看看是不是你想实现的功能

这个只是简单的调用了CMD的功能


可惜不是你,陪我到最后
2006-12-21 17:20
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
执行的时候,光标不能乱动
都是计算好了的,你直接输入命令就可以了

你要输入命令的时候,光标一定要在最后面,默认它自动会跳到最后面去

可惜不是你,陪我到最后
2006-12-21 17:21
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 
不错,强,辛苦了!

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-21 17:30
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
如果对他有帮助并且他能所有进步,辛苦也值得

可惜不是你,陪我到最后
2006-12-21 17:32
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 
给你加个精得了,我还没给别人加过精呢

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-21 17:36
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 


加个精也好,以后找起来方便

我以前写的例子都找不到了


可惜不是你,陪我到最后
2006-12-21 17:39
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 
加精了,真是受益良多

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-21 17:43
ttrr550
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-11-5
得分:0 

受益非浅!
3Q ~~~


2006-12-21 21:53
pity1115
Rank: 1
等 级:新手上路
威 望:2
帖 子:184
专家分:0
注 册:2006-9-15
得分:0 
千里,太厉害了。学习一下。

2006-12-21 23:24
earn_money
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-12-21
得分:0 
昨天下午5点左右,公寓突然停电,晕了.
谢谢千里冰封大哥了,我好好看看!
2006-12-22 16:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-111081-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.640826 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved