在Swing中,您只需setDefaultCloseOperation()在窗口关闭时关闭整个应用程序即可.
但是在JavaFX中我找不到相应的东西.我打开了多个窗口,如果窗口关闭,我想关闭整个应用程序.在JavaFX中这样做的方法是什么?
编辑:
我明白我可以覆盖setOnCloseRequest()在窗口关闭时执行一些操作.问题是应该执行什么操作来终止整个应用程序?
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
stop();
}
});
Run Code Online (Sandbox Code Playgroud)
类中stop()定义的方法Application什么都不做.
该invokedynamic指令用于帮助VM在运行时确定方法引用,而不是在编译时对其进行硬连线.
这对于动态语言很有用,其中确切的方法和参数类型在运行时才知道.但Java lambda不是这种情况.它们被转换为具有明确定义的参数的静态方法.并且可以使用此方法调用此方法invokestatic.
那么invokedynamiclambda 的需求是什么,尤其是在性能受到影响的情况下?
我使用以下命令安装了protobuf:
./configure
make
make check
make install
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时,protoc我得到以下错误:
protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud) 使用Eclipse时,在调试时可以在项目运行期间更改变量值以进行测试.
例如,假设我有一个返回数字5的方法,但出于测试目的,我想输出10.这不是我面临的问题,它有点复杂,但它只是为了让我的想法得以实现.
我正在调用一个函数,如果没有值,则返回一个空数组.
当我这样做时,它不起作用:
if r == [] {
fmt.Println("No return value")
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的工作是:
var a [0]int
if r == a {
fmt.Println("No return value")
}
Run Code Online (Sandbox Code Playgroud)
但是声明一个变量只是为了检查返回值似乎并不正确.有什么更好的方法呢?
尝试使用RVM安装任何内容时出现以下错误:
Searching for binary rubies, this might take some time.
Found remote file https://rvm.io/binaries/ubuntu/13.04/x86_64/ruby-2.1.1.tar.bz2
Checking requirements for ubuntu.
Installing requirements for ubuntu.
Updating system..kshitiz password required for 'apt-get --quiet --yes update':
............................
Error running 'requirements_debian_update_system ruby-2.1.1',
showing last 15 lines of /home/kshitiz/.rvm/log/1400047196_ruby-2.1.1/update_system.log
++ /scripts/functions/logging : rvm_pretty_print() 78 > case "${TERM:-dumb}" in
++ /scripts/functions/logging : rvm_pretty_print() 81 > case "$1" in
++ /scripts/functions/logging : rvm_pretty_print() 83 > [[ -t 2 ]]
++ /scripts/functions/logging : rvm_pretty_print() 83 > return 1
++ /scripts/functions/logging …Run Code Online (Sandbox Code Playgroud) 我有以下build.gradle文件:
apply plugin: 'java'
apply plugin: 'eclipse'
sourceCompatibility = 1.7
version = '1.0'
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework:spring-core:4.1.1.RELEASE'
compile 'org.springframework:spring-context:4.1.1.RELEASE'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
Run Code Online (Sandbox Code Playgroud)
我运行以下命令:
$ gradle --refresh-dependencies
Run Code Online (Sandbox Code Playgroud)
但它没有任何作用.依赖项不会更新,也不会反映在类路径上.命令的输出是:
:help
Welcome to Gradle 2.1.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
BUILD SUCCESSFUL
Total time: 5.999 secs
Run Code Online (Sandbox Code Playgroud)
通过Eclipse gradle插件这样做是可行的.
我创建了一个开源项目,我想将其发布到maven central,以便用户可以通过简单地在它们的pom中引用它来使用该库.像这样:
<dependency>
<groupId>in.ksharma</groupId>
<artifactId>log4j-weblayout</artifactId>
<version>0.0.1-BETA</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我发现了几个在线教程,但其中一些已经过时,有些人建议自动完成整个过程,从而使其明显复杂化.
例如,一个教程建议为您的github帐户创建SSH密钥,并且只要推送到maven central,maven就会自动创建一个git标记.虽然这很有用,但没有必要开始.
另一个例子,尝试通过maven直接释放它也会产生某种错误:
mvn release:clean release:prepare release:perform -B -e | tee maven-central-deploy.log
Run Code Online (Sandbox Code Playgroud)
得到:
svn:E155007:'/ home/kshitiz/Documents/workspaces/ggts/log4j-weblayout/pom.xml'不是工作副本
当你第一次做某事时,通常先手动完成,然后自动完成.
将JAR置于maven中心的最基本,最简单的方法是什么?
Lambda转换是一个两步过程,一个是:将lambda放入同一个类中的静态方法中.
public class Main {
public static void main(String[] args) {
Runnable r = () -> System.out.println("Hello");
System.out.println(Arrays.asList(Main.class.getDeclaredMethods()));
}
}
Run Code Online (Sandbox Code Playgroud)
[ private static void Main.lambda $ main $ 0(),public static void Main.main(java.lang.String [])]
二:生成实现功能接口的类.
System.out.println("A class has been generated: " + r.getClass());
System.out.println("That implements a Functional Interface: " + Arrays.asList(r.getClass().getInterfaces()));
Run Code Online (Sandbox Code Playgroud)
已生成一个类:类Main $$ Lambda $ 1/149928006
这实现了一个功能接口:[interface java.lang.Runnable]
问题:这种静态方法需要什么?为什么不能将lambda主体直接放入接口方法?就像是:
class Main$$Lambda$1 {
public void run() {
/* Lambda body here */
}
}
Run Code Online (Sandbox Code Playgroud)