我有一个简单的父项目,其中包含模块/应用程序.我选择的构建工具是gradle.父母build.gradle定义如下.
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}
allprojects {
repositories {
mavenCentral()
}
version "0.1.0-SNAPSHOT"
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在我的swing应用程序中使用version属性(0.1.0-SNAPSHOT).具体来说,我希望它显示在主JFrame的标题栏中.我希望能够做类似的事情this.setTitle("My Application - v." + ???.version);
该应用程序是一个简单的java项目,但我并不反对添加常规支持它会有所帮助.
我在我的项目中使用JSF.我正在使用PrimeFaces的上下文菜单.我看到p:menuItem我们有action,actionListener,onclick方法.所以我的问题是:什么时候我都用action,actionListner,onclick,什么是执行的顺序?
我在JavaFX应用程序中使用ListView控件.它被设置为MULTIPLE选择模式.我知道作为用户,我可以按住Ctrl键单击一个项目以取消选择它,但这对我的用户来说不够直观.我想要一种方法来第二次点击取消选择它.换句话说,点击一次 - 选择; 单击所选项目,它将被取消选中.
我尝试过使用ChangeListener和onMouseClicked事件.两者都不是很好.以下是每个代码片段.
的ChangeListener:
效果 - 列表中的第一项永远不会被选中.我点击它并保持不被点击.对项目2..n没有影响
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<SpecificAlgorithmData>() {
@Override
public void changed(final ObservableValue observableValue, final SpecificAlgorithmData oldData, final SpecificAlgorithmData newData) {
//if already selected then deselect it
int selectedIndex = listView.getSelectionModel().getSelectedIndex();
System.out.println("selected " + selectedIndex);
System.out.println("all selected" + listView.getSelectionModel().getSelectedIndices());
if (!selecting && !listView.getSelectionModel().getSelectedIndices().contains(selectedIndex)){
Iterator <Integer> iterator = listView.getSelectionModel().getSelectedIndices().iterator();
selecting = true;
listView.getSelectionModel().select(-1);//deselect all
while (iterator.hasNext()){
int index = iterator.next();
if (index!= selectedIndex){
listView.getSelectionModel().select(index);
}
}
selecting = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
的onClick:
没有效果,因为我不知道如何获得我刚刚点击的索引.由于硬编码,这完全不允许选择第2项.
listView.setOnMouseClicked(new EventHandler<MouseEvent>() { …Run Code Online (Sandbox Code Playgroud) 我有一个小的java应用程序/服务,它使用Java 7的新文件监视根文件夹及其子文件夹java.nio.file.WatchService.当新事件发生时(新文件,修改,删除等等)我启动rsync执行以将文件从服务器A复制到服务器B(反之亦然).该命令使用--delete选项确保从A中删除的文件也从B中删除.但是,为了使用此功能,您必须启用-r(递归子目录).通常这不是什么大问题,但根文件夹是5GB的数据(19000个文件,1500个文件夹).Rsync非常出色,但仍需要几分钟才能运行.
我遇到的问题是,如果两个服务器上的文件大致同时发生变化,则服务器A上创建的新文件可能会被同步B-> A的进程删除,因为--delete只会将源与目标进行比较并看到目的地的文件多于源文件.
由于我已经不情愿地使用Java应用程序查看每个目录,因此我不必使用-r(递归)rsync.我的第一个想法是用rsync来限制递归的深度,但我不认为这是rsync的一个特性.我也考虑过使用--exclude但不确定模式的外观.有人有主意吗?
作为参考,以下是生成的rsync命令的示例:
rsync -r --no-group --no-owner --no-perms --update --checksum --verbose --progress --stats --delete --ignore-errors "/media/server1files/" "/server2::server2"