简单的Java控制台接口

分享于 

5分钟阅读

桌面开发

  繁體

介绍

使用NetBeans开发和测试java代码可能非常令人生畏,因为输出窗口可以快速变得拥挤,输出变得越来越困难。 大多数使用 C# 或者 C 的开发人员发现使用 Windows 表单的测试可以很有帮助,并且可以通过快速暴露给定类的优点和缺点来加速开发。 然而,使用纯Java查找简单表单是比较困难的。 这个项目演示了一个简单,灵活,易于修改的方法,在java中创建类似窗口的控制台。

背景

在网上搜索'java控制台'的时候,几乎找不到。 我只能找到codeproject上一条处理这个问题,一个是相当复杂的,应该是一个简单的问题。 NetBeans现在似乎是首选的java应用程序开发。 NetBeans使用标准标准。标准标准和标准标准流,但不拥有显示流的控制台实例。 这些不包括清除屏幕的支持。 我利用了这个简单的java console-like窗口来克服这些限制,同时允许继续使用NetBeans输出窗口。

使用代码

本文中使用的java窗口演示了一个数学表达式解析器的测试。 但是你可以使用你选择的任何应用程序并将它的连接到控制台。 要构建控制台,请遵循NetBeans中的以下步骤:

  • New 项目-> Java -> 应用程序
  • 保留主未选中
  • 添加到项目 new Other-> Swing JavaForm
  • NB: 简单地添加 new JForm可能无法工作
  • 将摆动TextArea拖到设计视图上
  • NB: 不使用AWT文本- 它不能工作
  • 从'jTextArea1'属性-> 事件-> 添加'jTextArea1keypressed'事件
  • initComponents 下,将'this.setLocationRelativeTo(null);'添加到窗口中。
  • 根据需要在initComponents下添加标题文本
  • 在jTextArea属性-> 设置字体,前景和背景

通过首先添加 jTextArea1keypressed 事件来模拟控制台窗口。 注意不要将这里事件添加到控制台本身,这将无法工作。 大部分繁重的提升都是在这个事件中完成的;

privatevoid jTextArea1KeyPressed(java.awt.event.KeyEvent evt) { 
 if (evt.getKeyCode() == KeyEvent.VK_ENTER) { // Enter was pressed. Your code goes here.  String[] lines = jTextArea1.getText().split("n"); 
 int nline = lines.length; 
 String sCommand = lines[nline - 1]; 
 sCommand = sCommand.replaceAll("<<", ""); 
 System.out.println("sCommand =: |" + sCommand + "|"); 
 if (sCommand.equals("quit")) { 
 quitFlag = true; 
 appendString("Are you sure (yes/no)?n"); 
 // finalizing code goes here return;  } 
 if(sCommand.equals("Yes") || sCommand.equals("yes") || sCommand.equals("y")) { 
 if(quitFlag) { 
 System.out.println("User confirmed quit"); 
 Path p = Paths.get("./data/varmap.dat"); 
 varmap.writeMap(p); 
 System.exit(0); 
 } 
 } 
 if(sCommand.equals("No") || sCommand.equals("no") || sCommand.equals("n")) { if(quitFlag) { 
 System.out.println("User cancelled quit"); 
 quitFlag = false; 
 jTextArea1.append("nn<<"); 
 return; 
 } 
 if (sCommand.equals("cls")) { 
 int nlineCount = jTextArea1.getLineCount(); 
 System.out.println("nlineCount =:" + nlineCount); 
 sCommand = sCommand.replaceAll("<<", ""); 
 jTextArea1.setText(""); 
 jTextArea1.selectAll(); 
 jTextArea1.append("<<"); 
 return; 
 } 
. . .
// None of the 上面 so process the command hereString sMessage = "Processing '" + sCommand + "'n";
appendString(sMessage);
... or wire in your own desired test class here

如果你想使用NetBeans也下载并编译和运行源代码的源文件,uzip consolesrc.zip,则将它复制到你的目录,启动NetBeans也选择打开项目-> NetBeansProjects ConsoleDemo,然后选择 Run-> 生成并运行( 重新生成 dist/jar 文件夹),然后运行该项目。

yf_terminology_Points of Interest@#@#@#兴趣点_yf_terminology

我发现控制台窗口在开发和调试各种数学表达式解析器方面非常有帮助。 在这个演示中,我使用一个java版本的递归下降语法分析器( RDP ) 取自这里。 我添加了一个变量存储和retreival地图类,JVarMap,java和 prescanner JPreScan.java. 后者是必要的,因为只rdp评估数值表达式。 因此,预扫描将所有存储的变量转换为各自的数值,并将这些变量替换为要计算的表达式。 内置到解析器中的错误处理使得查找错误变得更加容易,特别是在与 NetBeans IDE输出一起使用。

历史记录

版本 1.0.0.0 2017年05月18日


JAVA  INT  接口  CONS  控制台  scratch