小编fer*_*rck的帖子

如何将参数传递给JavaFX应用程序?

我正在运行我的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实例?这是一个有缺陷的设计吗?

java parameters javafx

13
推荐指数
3
解决办法
2万
查看次数

可调用<Void>作为lambdas的功能接口

我刚学习新的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)

如何解释这种行为?

java lambda callable void java-8

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

java,具有固定最大宽度的多行工具提示,使用html标记

我想在我的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 像素,我应该以像素为单位计算文字宽度并更改开始标记吗?

html java swing tooltip

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

非静态上下文中的内部枚举

据我所知,内部枚举总是在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中它是一个糟糕的编程风格,因为它实际上是被禁止的?

有没有办法创建内部枚举与访问我的实例变量?

提前致谢.

java enums instance-variables inner-classes

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

Java中的时间间隔本地化

我需要将时间间隔表示为这样的本地化字符串:10 hours 25 minutes 1 second取决于Locale。用英语手工实现非常容易: String hourStr = hours == 1 ? "hour" : "hours"等等。

但是我需要根据不同语言的规则提供一些“开箱即用”的Java(也许是Java8)机制。Java是否具有它,或者我需要针对我自己在应用程序中使用的每个语言环境实现它?

java time localization jodatime intervals

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