我正在运行我的JavaFX应用程序:
public class MainEntry {
public static void main(String[] args) {
Controller controller = new Controller();
Application.launch(MainStage.class);
}
}
Run Code Online (Sandbox Code Playgroud)
MainStage课程延伸Appication.Application.launch在一个特殊的FX线程中启动我的JavaFX窗口,但在我的main方法中,我甚至没有我的MainStage类的实例.
如何将非String参数(在我的情况下为控制器)传递给MainStage实例?这是一个有缺陷的设计吗?
我刚学习新的java8功能.这是我的问题:
为什么不允许将Callable<Void>其用作lambda表达式的功能接口?(编译器抱怨返回值)并且在Callable<Integer>那里使用它仍然是完全合法的.以下是示例代码:
public class Test {
public static void main(String[] args) throws Exception {
// works fine
testInt(() -> {
System.out.println("From testInt method");
return 1;
});
testVoid(() -> {
System.out.println("From testVoid method");
// error! can't return void?
});
}
public static void testInt(Callable<Integer> callable) throws Exception {
callable.call();
}
public static void testVoid(Callable<Void> callable) throws Exception {
callable.call();
}
}
Run Code Online (Sandbox Code Playgroud)
如何解释这种行为?
我想在我的swing组件中添加多行工具提示消息.基本的解决方案是使用这样的html标签:
label.setToolTipText("<html><p width=\"350px\">" + text + "</p></html>");
Run Code Online (Sandbox Code Playgroud)
它适用于长文本.但是,如果文本,包括只包含一个单词,它也将固定350px宽度,并且有很多空白空间.
max-width是否有任何特殊的html属性可以使用setToolTipText()方法正常工作?我尝试了下一个解决方案,但它不起作用:
"<p style=\"max-width: 350px\">"
Run Code Online (Sandbox Code Playgroud)
<p>如果宽度小于350 像素,我应该以像素为单位计算文字宽度并更改开始标记吗?
据我所知,内部枚举总是在java中显式地隐式静态.这意味着我无法从内部枚举类中访问实例字段.
public class InnerEnum {
private enum SomeInnerEnum {
VALUE1() {
@Override
public void doSomething() {
// ERROR: WON'T COMPILE
// Cannot make static reference
// to non-static field i
System.out.println(i);
}
},
VALUE2() {
@Override
public void doSomething() {
// do something else with i
}
};
public abstract void doSomething();
}
private int i = 10;
}
Run Code Online (Sandbox Code Playgroud)
我发现在每个枚举常量中重写方法非常方便,所以我可以在我的外部类中使用它.在java中它是一个糟糕的编程风格,因为它实际上是被禁止的?
有没有办法创建内部枚举与访问我的实例变量?
提前致谢.
我需要将时间间隔表示为这样的本地化字符串:10 hours 25 minutes 1 second取决于Locale。用英语手工实现非常容易:
String hourStr = hours == 1 ? "hour" : "hours"等等。
但是我需要根据不同语言的规则提供一些“开箱即用”的Java(也许是Java8)机制。Java是否具有它,或者我需要针对我自己在应用程序中使用的每个语言环境实现它?