java swing执行adb命令显示到文本框

2022-06-21 00:00:00 执行 命令 文本框

我们经常使用Runtime.getRuntime().exec(adb shell );在java执行的时候,不像我们cmd执行会有结果显示,我们就不会知道执行结果如何,如push不知道有没有push玩;

首先我们Swing画有textArea文本框(带滚动条的,否则内容太多显示不完,先scrollPane,在选择JTextArea放在上面,具体百度swing方法使用)。

效果图(adb 输入的结果,显示到这个框里),如下:

 

 

具体实现(格式很乱,复制到eclipse中排列下):

  //把line的内容输入到文本框显示
  private void showContent(String msg) {
                textArea.setText(msg);
    }             


           //按钮实现:
           btnNewButton.addActionListener(new ActionListener() {
		  private Component p;
		public void actionPerformed(ActionEvent e) {

                      //从这里开始
                      Process process1 = null;
					  StringBuilder result = new StringBuilder();
					  BufferedReader bufrIn = null;
				      BufferedReader bufrError = null;
				      String line = null;
						try {
								
							System.out.println("path1a: "+path1);//path是选择脚本路径
							if(path1.equals("")){//这个判断路径不能为空,这能equals写法,其他写法不行,如:path1==null 或 path1==“”,这样不对的。
							System.out.println("path: "+path);

//				    process1.waitFor();// 方法阻塞, 等待命令执行完成(成功会返回0)
					process1 =Runtime.getRuntime().exec("adb pull       sdcard/pictures/screenshots "+path);
							 // 获取命令执行结果, 有两个结果: 正常的输出 和 错误的输出(PS: 子进程的输出就是主进程的输入)
				            bufrIn = new BufferedReader(new InputStreamReader(process1.getInputStream(), "UTF-8"));
				            bufrError = new BufferedReader(new InputStreamReader(process1.getErrorStream(), "UTF-8"));
				            
				            // 读取输出
				            
				            while ((line = bufrIn.readLine()) != null) {
				                result.append(line).append('\n');
				                System.out.println("line1: "+line);//输出内容
				            }
				            
				            StringBuffer outputBuf = new StringBuffer();//固定写法
				            
                            //好像输出的内容是下面这块line
				            while ((line = bufrError.readLine()) != null) {
				                result.append(line).append('\n');//内容打印到控制台换行
				                System.out.println("line2: "+line);//内容打印到控制台
				                String bc = line; //bc接收line的内容
				                
				                outputBuf.append(line);//输出内容
				                outputBuf.append("\n");//换行
				            }
				            //显示该方法,同textArea.setText(msg)
				            showContent(outputBuf.toString());


                            } catch (Throwable t) {
							t.printStackTrace();
						}
 
					}
				});

 

    原文作者:享有盛誉之名
    原文地址: https://blog.csdn.net/bbs11007/article/details/88662365
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章