我创建了一个表单来检查边距和填充对可滚动组件的影响 . 显然填充是滚动内容的一部分 - 我在任何地方都找不到 . 一个人应该合理地猜测还是应该记录下来?

无论如何 - 当列表向下滚动到结尾时会有一种奇怪的行为,我希望它像拉伸滚动一样滚动回内容,但事实并非如此 . 这是一个错误吗?

附带的代码演示了这一点 - 按钮为列表添加了按钮;向下滚动按钮滚动到最后一个条目 - 单击时列表处于奇怪的状态:

public class FormMarginPaddingScroll extends Form {
    private int entrytally = 0;

    public FormMarginPaddingScroll() {
        setTitle("FormMarginPaddingScroll");
        setScrollable(false);
        Container contentPane = getContentPane();
        contentPane.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
        contentPane.setScrollableY(true);
        Style style = contentPane.getAllStyles();
        style.setMarginUnit(Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS);
        style.setMargin(5, 5, 5, 5);
        style.setPaddingUnit(Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS);
        style.setPadding(5, 5, 5, 5);
        style.setBorder(Border.createDashedBorder(1));
        TextArea textArea = new TextArea("This form is for checking margin, border, padding and scrolling behaviour.");
        textArea.setEditable(false);
        contentPane.add(textArea);
        {
            FloatingActionButton floatingActionButton = FloatingActionButton.createFAB(FontImage2.MATERIAL_ARROW_DOWNWARD);
            floatingActionButton.bindFabToContainer(contentPane, Component.LEFT, Component.BOTTOM);
            floatingActionButton.addActionListener((e) -> scrollDown(contentPane));
        }
        {
            FloatingActionButton floatingActionButton = FloatingActionButton.createFAB(FontImage2.MATERIAL_ADD);
            floatingActionButton.bindFabToContainer(contentPane, Component.RIGHT, Component.BOTTOM);
            floatingActionButton.addActionListener((e) -> newEntry(contentPane));
        }
    }

    private void scrollDown(Container contentPane) {
        Component componentLast = contentPane.getComponentAt(contentPane.getComponentCount() - 1);
        contentPane.scrollRectToVisible(
                componentLast.getX(),
                componentLast.getY(), 
                componentLast.getWidth(), 
                contentPane.getHeight(), 
                componentLast);
    }

    private void newEntry(Container contentPane) {
        final int entryid = ++entrytally;
        Button button = new Button("" + entryid);
        button.addActionListener((e) -> {
        ToastBar.Status status = ToastBar.getInstance().createStatus();
        status.setMessage("button " + entryid + " pressed");
        status.setExpires(3000);
        status.show();
        });
        contentPane.add(button);
        contentPane.revalidate();;
    }
}