java将结果输出到文本域_将另一个程序的输出打印到Java文本区域

作者探讨如何在Java Swing应用中使用ProcessBuilder启动子进程,并将其输出重定向到GUI文本区域。遇到的问题包括输出显示在辅助窗口而非终端,以及对进程结束处理的讨论。文章寻求解决输出重定向问题的方法,并质疑使用SwingWorker的效率。
摘要由CSDN通过智能技术生成

我正在使用Java创建GUI.此GUI使用ProcessBuilder类从命令行启动程序.

关于正在启动的进程的一些信息:在命令行中,它创建了另一个窗口并将信息打印到所述窗口.

在我的GUI窗口中,我有一个文本区域,我要将其重定向到该输出.我原本打算使用SwingWorker对象来不断检查更多输出,而不是阻止GUI.为了测试并确保我的原始语法正确(甚至没有引入GUI),我想我会将输出从辅助进程的窗口打印到System.out.但是,似乎有些问题,因为我可以在辅助进程的窗口中看到输出,而不是我正在使用的终端.

代码摘录如下:

Process p = pb.start();

Scanner s = new Scanner(p.getInputStream());

SwingWorker pipe = new SwingWorker (){

public String doInBackground(){

while(run){

if(s.hasNextLine()){

System.out.println("S has next!");

System.out.println(s.nextLine());

}

}

return null;

}

};

pipe.execute();

布尔运算在程序的其他位置定义,并且在进程p退出或被强制退出时设置为false(另一个问题:这是一个非常糟糕的主意吗?我觉得可能是…).

有谁知道为什么当我看到输出到另一个窗口时却没有得到任何输出?最初,我的反应是使用p.getOutputStream(),但Scanner并不将outputStream用作参数.

感谢您的时间.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的文本域(TextField)是一种用户界面(UI)组件,用于接收、显示和编辑单行文本数据。常用于表单、对话框和其他需要用户输入或编辑文本的场合。 Java文本域有多种类型,包括单行文本域(TextField)、密码域(PasswordField)和可编辑的组合框(JComboBox),它们都属于javax.swing包中的一部分。 下面是一个简单的使用单行文本域的示例: ```java import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class TextFieldExample { public static void main(String[] args) { // 创建一个窗口 JFrame frame = new JFrame("文本域示例"); frame.setSize(300, 150); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建一个标签和一个文本域 JLabel label = new JLabel("请输入您的姓名:"); JTextField textField = new JTextField(20); // 将标签和文本域添加到窗口中 frame.add(label); frame.add(textField); // 显示窗口 frame.setVisible(true); } } ``` 上述代码中,`JFrame`表示窗口,`JLabel`表示标签,`JTextField`表示文本域。`setSize`方法设置窗口大小,`setDefaultCloseOperation`方法设置窗口关闭模式,`JLabel`和`JTextField`的构造函数中的参数表示它们的宽度。 在上述代码中,我们创建了一个文本域并将其添加到了窗口中。用户可以在文本域中输入文本,并且可以通过`getText`方法获取文本域中的内容。例如,可以添加一个按钮,当用户点击时获取文本域中的内容并进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值