【问题标题】:How can I enable the scrolling in a JScrollPane?如何在 JScrollPane 中启用滚动?
【发布时间】:2020-03-28 16:06:57
【问题描述】:

我正在构建一个视图,然后我意识到我需要在里面放入太多信息,所以它不适合窗口。所以我决定创建一个 JScrollPane 来将所有元素放入其中,并在需要时继续包含新元素,以便能够在我的窗口中看到它们。

这是我的滚动窗格的代码:

public JPanel getActionsPane() {
    if (Objects.isNull(actionsPane)){
        actionsPane = new JPanel();
        actionsPane.setLayout(null);
        actionsPane.setBounds(0, 29, 1580, 1450);
        addComponents();
    }
    return actionsPane;
}

public JScrollPane getActionsScrollPane() {
    if (Objects.isNull(actionsScrollPane)){
        actionsScrollPane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        actionsScrollPane.add(getActionsPane());
        actionsScrollPane.setLayout(new ScrollPaneLayout());
        actionsScrollPane.setBounds(0, 29, 593, 400);
        actionsScrollPane.setViewportView(getActionsPane());
    }
    return actionsScrollPane;
}

但是我编译的时候只能看到这个:

[

如您所见,没有显示卷轴。过去我没有经常使用 JScrollPane,也许我缺少一些启用滚动的属性?

【问题讨论】:

  • 默认是滚动窗格在需要时变为可见。您的图像显示,您显示的数据量不需要它们。此外,使用 Swing 布局管理器。不要设定界限。
  • 非常感谢stackoverflow.com/users/300257/gilbert-le-blanc,我添加了一个显示滚动不正常工作的新图像,因为下面有更多信息,所以滚动应该会自动出现。我会按照你的建议使用布局管理器

标签: java swing jscrollpane


【解决方案1】:

我遵循了几个建议,尝试使用布局,但这些都不适合我。最后,感谢朋友的建议,我设法做到了,没有布局,只是修改了我的旧方法。

public UI_ReembolsoFondoRegistrar(Window window) {
    super(window);
    setBounds(100, 100, 593, 750);
    setLocationRelativeTo(null);
    setTitle("Reembolsar el fondo para dietas y pagos menores");
    buttonPane.add(getBtnAceptar());
    buttonPane.add(getBtnCancelar());
    contentPanel.setLayout(null);
    contentPanel.add(getLblFecha());

    contentPanel.add(getActionsScrollPane());

    contentPanel.add(getLblCustodio());
    contentPanel.add(getCbxCustodio());
    contentPanel.add(getLblContab());
    contentPanel.add(getCbxContab());
    contentPanel.add(getLblRevisado());
    contentPanel.add(getCbxRevisado());
    contentPanel.add(getLblAprobado());
    contentPanel.add(getCbxAprobado());
    contentPanel.add(getLblCheque());
    contentPanel.add(getTxtCheque());
    contentPanel.add(getLblFecha_1());
    contentPanel.add(getDateChooser());
    contentPanel.add(getLblAnotado());
    contentPanel.add(getCbxAnotado());
    contentPanel.add(getSeparator_2());
}

public JPanel getActionsPane() {
    if (Objects.isNull(actionsPane)){
        actionsPane = new JPanel();
        actionsPane.setLayout(null);
        actionsPane.setPreferredSize(new Dimension(1580,525));
        addComponents();
    }
    return actionsPane;
}

public JScrollPane getActionsScrollPane() {
    if (Objects.isNull(actionsScrollPane)){
        actionsScrollPane = new JScrollPane(getActionsPane(), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        actionsScrollPane.setViewportView(getActionsPane());
        actionsScrollPane.setBounds(0,28,593,480);
    }
    return actionsScrollPane;
}

private void addComponents(){
    actionsPane.add(getPanelGastosViaje());
    actionsPane.add(getPanelValePM());
    actionsPane.add(getLblCuenta());
    actionsPane.add(getCbxCuenta());
    actionsPane.add(getLblOCC());
    actionsPane.add(getCbxOCC());
    actionsPane.add(getLblCUP());
    actionsPane.add(getTxtCUP());
    actionsPane.add(getTxtTotalCUP());
    actionsPane.add(getBtnDesCUP());
    actionsPane.add(getSeparator_1());
    actionsPane.add(getLblCUC());
    actionsPane.add(getTxtCUC());
    actionsPane.add(getTxtTotalCUC());
    actionsPane.add(getBtnDesCUC());
    actionsPane.add(getContrapartidasTableJP());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2016-04-30
    • 2020-08-05
    • 2015-08-09
    • 2014-12-06
    相关资源
    最近更新 更多