Как включить прокрутку в JScrollPane? - PullRequest
0 голосов
/ 28 марта 2020

Я строил представление, а потом понял, что мне нужно поместить слишком много информации внутрь, чтобы оно не помещалось в окне. Поэтому я решил создать 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 in runtime]

Как видите, свиток не отображается. Я не очень много работал с JScrollPane в прошлом, может быть, мне не хватает некоторых свойств, чтобы включить прокрутки?

1 Ответ

0 голосов
/ 03 апреля 2020

Я следую нескольким советам, пробовал использовать макеты, у меня ничего не получалось. Наконец, благодаря предложению друзей, мне удается сделать это без макетов, просто изменив мой старый подход.

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());
}

Scroll working now

...