小编Ros*_*oss的帖子

Eclipse IDE中的java.io.Console支持

我使用Eclipse IDE来开发,编译和运行我的Java项目.今天,我正在尝试使用java.io.Console该类来管理输出,更重要的是,用户输入.

问题是当应用程序"通过"Eclipse运行时System.console()返回null.Eclipse在后台进程上运行程序,而不是我们熟悉的控制台窗口的顶级进程.

有没有办法强制Eclipse将程序作为顶级进程运行,或者至少创建一个JVM将识别的控制台?否则,我被迫将项目放在jar上并在Eclipse外部的命令行环境中运行.

java eclipse console java-io

103
推荐指数
4
解决办法
9万
查看次数

输入按键的行为类似于Javascript中的Tab

我正在寻找创建一个表单,按Enter键导致焦点转到页面上的"下一个"表单元素.我一直在网上找到的解决方案是......

 <body onkeydown="if(event.keyCode==13){event.keyCode=9; return event.keyCode}">
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎只适用于IE.所以这个问题的真正含义是,是否有人知道适用于FF和Chrome的解决方案?另外,我宁愿不必将onkeydown事件添加到表单元素本身,但如果这是唯一的方法,那就必须这样做.

这个问题类似于问题905222,但在我看来,这个问题值得我自己提出.

编辑:另外,我已经看到人们提出这个问题并不好,因为它与用户习惯的形式行为不同.我同意!这是客户要求:(

html javascript cross-browser dom-events

68
推荐指数
6
解决办法
13万
查看次数

java.util.Collection的经典集合操作

java.util.Collection类上的经典集合操作是否有任何内置功能?我的具体实现将是ArrayList,但这听起来应该适用于Collection的所有子类.我正在寻找类似的东西:

ArrayList<Integer> setA ...
ArrayList<Integer> setB ...
ArrayList<Integer> setAintersectionB = setA.intersection(setB);
ArrayList<Integer> setAminusB = setA.subtract(setB);
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我才能找到本土解决方案.此外,我意识到我可能会混淆"集合"的想法与"集合"的想法混淆,不允许和分别允许重复.也许这只是Set界面的功能?

如果没有人知道任何内置功能,也许我们可以将其用作标准实践Java集操作代码的存储库?我想这个轮子已经多次重新发明.

java collections set

64
推荐指数
4
解决办法
5万
查看次数

Excel工作表名称的有效字符

在Java中,我们使用以下包以编程方式创建excel文档:

org.apache.poi.hssf
Run Code Online (Sandbox Code Playgroud)

如果您尝试设置工作表的名称(不是文件,而是内部Excel工作表),则在以下情况下会出现错误:

  • 名称超过31个字符
  • 该名称包含以下任何字符:/\*?[]

但是,在创建工作表名称为的文档后:

@#$%&()+〜`"':;.,|

没有输出错误,Java中的一切似乎都很好.当您在Office 2003中打开Excel文件时,它将显示一个错误,指出工作表名称无效,并将其重命名为通用的"工作表1".

我不太了解我们之前所说的包,但看起来它没有正确过滤无效的Excel工作表名称.知道如何过滤掉所有已知的无效字符?我只是过滤掉所有非单词字符而犹豫不决.

java excel

31
推荐指数
4
解决办法
3万
查看次数

没有应用程序焦点的Java中的事件监听器?(全球按键检测)

我一直在寻找一段时间,每个人似乎都认为只使用Java是不可能的,所以我会给出一个镜头;)

有没有办法让我的Java应用程序监听事件(特别是关键事件),而另一个不相关的应用程序有窗口焦点?在我的情况下,我想要检测用户何时按下键盘上的"暂停"键,即使我的Java应用程序没有焦点.

我听说有些人提到唯一的方法是编写一些C代码并使用JNI.只是好奇是否有人知道如何避免这种情况?或者,如果没有,至少是关于c/JNI的非常好的教程?

谢谢

java java-native-interface keylistener listener

19
推荐指数
2
解决办法
1万
查看次数

在JavaFX中强制立即绘制

有没有办法在继续之前强制JavaFX应用程序重绘自己?类似于Swing Panel的paint(Graphic g)方法(我可能会在那里得到错误的关键字).

请考虑以下示例:您编写TicTacToe应用程序以及计算机播放器所需的AI.你希望有能力向两位电脑玩家展示它.也许你在计算机转弯之间暂停了两秒钟,让它具有逼真的效果.当你点击"开始"按钮时,会有一个很大的无响应停顿(9个回合所需的时间,假装计算机暂停'决定')然后突然应用程序的视觉效果更新完成游戏的状态.

一旦应用程序的线程中的处理完成,似乎JavaFX重新绘制了?我在这里不太确定.

谢谢!

javafx

7
推荐指数
1
解决办法
1万
查看次数

从Ant访问Java类公共成员变量并在构建任务中使用它

我的Java应用程序在几个地方显示其版本号,因此我将其存储为应用程序主类中的公共最终变量.有没有办法在我的Ant构建任务中访问它?本着自动化构建过程的精神,我希望Ant自动将zipped distributable命名为当前版本号,但我不确定如何.我猜它看起来像......

<target name="createZip" depends="build">
    <zip destfile="../dist/MyApp_${MyApp.version}.zip">
        <fileset dir="../dist">
            <include name="**/MyApp"/>
        </fileset>
    </zip>
</target>
Run Code Online (Sandbox Code Playgroud)

我只是不确定要放在$ {MyApp.version}的位置.我意识到我可以将它放在构建属性文件中,但是能够直接从我已经存储它的类文件中提取它会更方便.

java ant build-automation build-process build

5
推荐指数
1
解决办法
3095
查看次数

用户闲置10分钟后,Java应用程序使屏幕显示无响应

我编写了一个Java应用程序,允许用户编写鼠标/键盘输入脚本(JMacro,链接并不重要,只是为了好奇).我个人使用该应用程序在我睡觉的同时在线游戏中自动执行角色动作.不幸的是,我一直在早上回到电脑前发现它没有反应.经过进一步测试,我发现我的应用程序导致计算机在大约10分钟的用户空闲时间后无响应(即使应用程序本身模拟用户活动).我似乎无法指出这个问题,所以我希望其他人可能会建议在哪里寻找或可能导致问题的原因.

相关症状和特征:

  • 用户闲置10分钟后发生无响应
  • 用户仍然可以在屏幕上移动鼠标指针
  • 除鼠标外的所有内容都显示为冻结...鼠标单击无效,并且没有应用程序更新其显示,包括Windows 7桌面
  • 我离开了任务管理器,随着应用程序一夜之间,所以我可以在屏幕冻结之前看到最后一个任务管理器图像... Java应用程序正常CPU /内存使用率和总CPU使用率仅为~1%
  • 移动鼠标后(换句话说,用户从空闲状态返回),屏幕图像在30分钟内再次开始更新(这是非常受欢迎的,有时是10分钟,有时在两小时后没有结果)
  • 用户可以按CTRL-ALT-DEL进入Windows 7的CTRL-ALT-DEL屏幕(暂停30秒后).用户仍然可以移动鼠标指针,但单击任何按钮选项会导致屏幕再次冻结
  • 在一些非常罕见的情况下,系统永远不会冻结,我早上回到它,充分的响应
  • Java应用程序会在半夜自动停止输入脚本,因此Windows 7会检测到"真正的"空闲状态并将显示器转为待机模式......当我醒来时,他们在早上手动移动鼠标时成功退出即使桌面显示仍然显示为冻结

鉴于问题的症状和特征,就好像Java应用程序导致登录用户的桌面显示停止更新,包括任何正在运行的应用程序.

使用的编程概念和Java包:

  • 多线程
  • 标准输出错误被重新路由到javax.swing.JTextArea
  • 该应用程序使用Swing GUI
  • awt.Robot(非常使用)
  • awt.PointerInfo
  • awt.MouseInfo

系统规格:

  • Windows 7专业版
  • Java 1.6.0 u17

总之,我应该强调,我不是在寻找任何具体的解决方案,因为我没有提出一个非常具体的问题.我只是想知道在使用我正在使用的Java库时是否有人遇到过类似的问题.我也很乐意感谢有任何建议,试图进一步查明造成问题的原因.

谢谢!

罗斯

PS,我会发布更新/答案,如果我在继续调试时遇到其他任何问题.

更新:我的应用程序涉及多线程进程,每个进程初始化自己的Robot对象并异步创建输入事件.我重构了应用程序只包含一个Robot单例对象,但不同的进程仍然异步调用输入命令.据我所知,这并没有改变我的应用程序的行为.我的下一步可能是在Robot单例周围创建一个同步包装器,看看是否有帮助,但鉴于症状,我不知道为什么会这样.

java swing awt awtrobot

5
推荐指数
1
解决办法
3754
查看次数

模拟用Java按下的键

我正在寻找模拟在Java中短按键盘键的动作。我希望下面的代码按住A键5秒钟,但是只按一次它(在记事本中测试时会产生一个“ a”)。我是否需要使用其他东西,或者我在这里使用awt.Robot类错了吗?

Robot robot = null; 
robot = new Robot();
robot.keyPress(KeyEvent.VK_A);
Thread.sleep(5000);
robot.keyRelease(KeyEvent.VK_A);
Run Code Online (Sandbox Code Playgroud)

java awt keypress keyevent

4
推荐指数
1
解决办法
1万
查看次数

双击CFEclipse中的文本选择

在CFEclipse中,我做了很多双击选择文本.标准行为是选择最近的单词边界内的所有文本.在编辑原始编辑器不使用camel-case的代码时,这是有问题的; 例如,他们将"myObject"写为"my_object".

有没有办法更改双击选择行为以包含'_'作为有效的单词字符?

eclipse coldfusion configuration cfeclipse

3
推荐指数
1
解决办法
1351
查看次数

将JSP输出流传递给方法

我已经创建了一个类MyClass,它打算向JSP输出大量文本.我认为MyClass对象使用页面的输出流更好.这是一个好/可能的想法吗?

在测试可能的方法来做到这一点......

这些输出文本,但它显示在页面正文之前:

response.getWriter().append("test1");
response.getWriter().println("test2");
response.getWriter().write("test3");
Run Code Online (Sandbox Code Playgroud)

这个错误告诉我输出流已经得到了:

response.getOutputStream().println("test4");
Run Code Online (Sandbox Code Playgroud)

java jsp

3
推荐指数
1
解决办法
5973
查看次数

初步软件许可实施的想法

我正在尝试决定如何为我编写的某些软件实现一个非常基本的许可解决方案.该软件将在我的(假设的)客户端机器上运行,其想法是如果客户端在超过n台机器上运行它,软件将立即退出(带有友好消息)(n是许可证的数量)已购买).此外,客户非技术娴熟,"基本"足够好.

这是我目前的设计,但鉴于我对该主题几乎没有经验,我想在开始任何开发之前询问它:

  • 远程服务器使用包含两列的表来托管MySQL数据库:客户端密钥和许可证数量
  • 客户端应用程序在启动时连接到MySQL数据库,提供它的客户端密钥,我将其放入打包到分发中的属性文件中(我将为每个新客户端创建一个新的分发)
  • 有可能,我需要第二个表来存储验证历史记录,因此通过一些简短的逻辑,软件可以决定它是否可以在给定的机器上运行(可能是每24小时使用该软件的n台机器的滑动窗口)
  • 如果软件无法建立与MySQL数据库的连接,或者确定它每天都在n个允许的机器上,则关闭
  • 托管MySQL数据库的远程服务器的连接信息应该硬编码到应用程序中?(这听起来不错,但除此之外,他们可以将其指向其他一些始终验证成功的服务器)

我认为这涵盖了我的初步设计.目的是虽然它肯定不是完全证明,但我认为我至少有点难以创建一个易于共享的破解解决方案.此外,我可以轻松调整给定客户端/密钥对的许可证数量.

我必须知道这已经完成了一百万次,所以请告诉我一个更好的解决方案,它实现起来同样简单,并提供相同(低)的安全性.如果使用外部库,我更喜欢Java,因为这就是软件编写的内容.

java security licensing

1
推荐指数
1
解决办法
2243
查看次数