java gui 中怎么把一个文本域做成一个控制台。跪求。谢谢

yhh95222 2009-09-20 06:06:52
RT。
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liguangwen86 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 etionsun 的回复:]
执行命令?显示编译信息?
对文本域的输入进行格式处理,输入规定格式命令调用后台程序(想怎么处理就怎么处理),调回System.in对象中的编译信息到文本域中,不就可以模拟出控制台的程序了吗。
[/Quote]
可行
etionsun 2009-09-21
  • 打赏
  • 举报
回复
执行命令?显示编译信息?
对文本域的输入进行格式处理,输入规定格式命令调用后台程序(想怎么处理就怎么处理),调回System.in对象中的编译信息到文本域中,不就可以模拟出控制台的程序了吗。
liwenso 2009-09-21
  • 打赏
  • 举报
回复
4L正解
我以前做过一个数据监控的,就采用
// 截获被调用程序的DOS运行窗口的标准输出
BufferedReader br = new BufferedReader(
new InputStreamReader(process.getInputStream()));
猿敲月下码 2009-09-21
  • 打赏
  • 举报
回复
package com.gui;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;

public class MyDOS extends JFrame {
/**
*
*/
private static final long serialVersionUID = -5418344602348249043L;
private JPanel pup = new JPanel();
private JPanel pdown = new JPanel();
private JTextField txtCommand = new JTextField(45);
private JTextArea txtContent = new JTextArea();
private JButton btnExec = new JButton("Execute");

public MyDOS() {
// 指定框架的布局管理器
setLayout(new BorderLayout());
// 设置文本框,文本域字体
txtCommand.setFont(new Font("", Font.BOLD, 13));
txtContent.setFont(new Font("", Font.BOLD, 13));
// 指定面板的布局
pup.setLayout(new BorderLayout());
pdown.setLayout(new FlowLayout());

// 将文本域添加导面板中
pup.add(txtContent);
// 为文本域添加滚动条
pup.add(new JScrollPane(txtContent));
// 将文本框,按钮添加到面板中
pdown.add(txtCommand);
pdown.add(btnExec);

// 添加面板到框架中
this.add(pup, BorderLayout.CENTER);
this.add(pdown, BorderLayout.SOUTH);

// 设置事件

// 添加按钮事件
btnExec.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s;
// 获取文本框中的命令
String command = txtCommand.getText().trim();
Process process;
try {
process = Runtime.getRuntime().exec("cmd /c " + command);
// 截获被调用程序的DOS运行窗口的标准输出
BufferedReader br = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while ((s = br.readLine()) != null)
txtContent.append(s + "\r\n");

process.waitFor();
txtCommand.setText("");
} catch (IOException e1) {
e1.printStackTrace();
} catch (InterruptedException e2) {
e2.printStackTrace();
}
}
});

// 添加键盘Enter事件
txtCommand.addKeyListener(new KeyListener() {

public void keyPressed(KeyEvent e) {
// 当按下回车时
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
String s;
// 获取文本框中的命令
String command = txtCommand.getText().trim();
Process process;
try {
process = Runtime.getRuntime()
.exec("cmd /c " + command);
// 截获被调用程序的DOS运行窗口的标准输出
BufferedReader br = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while ((s = br.readLine()) != null)
txtContent.append(s + "\r\n");

process.waitFor();
txtCommand.setText("");

} catch (IOException e1) {
e1.printStackTrace();
} catch (InterruptedException e2) {
e2.printStackTrace();
}
}
}

public void keyReleased(KeyEvent e) {
}

public void keyTyped(KeyEvent e) {
}
});
}

public static void main(String[] args) {
MyDOS frame = new MyDOS();
frame.setTitle("MyDOS");
frame.setSize(666, 444);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}


yhh95222 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 etionsun 的回复:]
执行命令?显示编译信息?
对文本域的输入进行格式处理,输入规定格式命令调用后台程序(想怎么处理就怎么处理),调回System.in对象中的编译信息到文本域中,不就可以模拟出控制台的程序了吗。
[/Quote]

谢谢。但是这种方法只能调用一层命令。我现在想先调用一个shell,然后在这个shell程序里执行命令。如果是这样的话我貌似就没有办法执行命令了。

看这个。http://topic.csdn.net/u/20090920/18/e869ed73-f3de-4840-b471-775b8af1b3d4.html

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧