小编jig*_*wot的帖子

为什么将此Java方法调用视为模棱两可?

我遇到了奇怪的错误消息,我认为这可能是不正确的。考虑以下代码:

public class Overloaded {
    public interface Supplier {
        int get();
    }

    public interface Processor {
        String process(String s);
    }

    public static void load(Supplier s) {}
    public static void load(Processor p) {}

    public static int genuinelyAmbiguous() { return 4; }
    public static String genuinelyAmbiguous(String s) { return "string"; }

    public static int notAmbiguous() { return 4; }
    public static String notAmbiguous(int x, int y) { return "string"; }

    public static int strangelyAmbiguous() { return 4; }
    public static String strangelyAmbiguous(int …
Run Code Online (Sandbox Code Playgroud)

java overloading arity functional-interface method-reference

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

为什么我的 JTextArea 会溢出 GroupLayout 中的框架?

我正在使用 GroupLayout 观察一些奇怪的行为。我有一个 JTextArea,它包含在 JScrollPane 中,它正在调整大小并将其他组件推出 JFrame。奇怪的是,如果我重新排列布局,使 JTextArea 上方或下方没有任何内容(也没有间隙),它工作正常。就好像文本区域在询问容器容器中有多少空间,然后将其 100% 拿走,而不管其他组件。另一个奇怪的事情是,它似乎只有在 JTextArea(不是 JScrollPane)大小加上容器内的其他组件高度达到 Short.MAX_VALUE 时才会发生。

如果我将滚动窗格的垂直组中的最大大小(将组件添加到布局时)指定为小于 Short.MAX_VALUE 的值,则似乎可以解决问题(只要该值与 Short.MAX_VALUE 之间的差异)。 MAX_VALUE 大于所有其他组件的高度)。例如

.addComponent(textArea, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE - 500)

此外,如果我将首选大小设置为一个小的正值,而不是 GroupLayout.PREFERRED_SIZE 或 GroupLayout.DEFAULT_SIZE,它似乎也会使这种行为消失。例如

.addComponent(textArea, 0, 1, Short.MAX_VALUE)

GroupLayout 上的 Java 教程似乎没有提及任何关于此的内容,并且倾向于到处使用 Short.MAX_VALUE。我尝试谷歌搜索以找到答案,但我发现这个问题很难用搜索词来描述。

我是否发现了错误,或者我只是不了解 GroupLayout?后者似乎更有可能。

此示例将创建一个简单的文本区域。按下下方的按钮以填充文本(并在 JScrollPane 内调整 JTextArea 的大小)。然后,您可以在文本区域内单击并添加或删除行。添加一些额外的线条后,单击重绘按钮(或调整框架大小)以查看奇怪的行为。

public class GroupLayoutTest {
    public GroupLayoutTest() {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                final JFrame frame = new JFrame("GroupLayout test");
                Container panel = frame.getContentPane();

                GroupLayout layout = new …
Run Code Online (Sandbox Code Playgroud)

java swing grouplayout

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