Удалять JCheckBox, и что повторно разместились, не оставляя пространств

У меня есть применение с компаньонами колледжа. JCheckBox Вы соответствуете компаньонам, которые есть в моем списке. Я могу увольнять этих компаньонов. Когда в списке, стерев, уже не существует компаньон, его JCheckBox корреспондент исчезает. Это делать. Проблема состоит в том, что например, когда исчезают Ученики, у меня остается пустая пустота и не, как делание для того, чтобы все осталось довольно верным, без этих отверстий. Я попробовал несколько вещей как pack(), validate() или revalidate() но не очень хорошо для того, чтобы Вы служите (и Вы я не функционируете). introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

Здесь я оставляю вам кодекс, когда я удаляю

private class OcultarCheckBoxesNoPertenecientesLista implements ListSelectionListener{

    @Override
    public void valueChanged(ListSelectionEvent arg0) {
        jCheckBoxAlumnos.setVisible(false);
        for (int i = 0; i < listaAsociados.size(); i++) {//alumno
           if(listaAsociados.get(i).getClass().getSimpleName().equals(Alumno.class.getSimpleName())){
               jCheckBoxAlumnos.setVisible(true);
           }
        }

        jCheckBoxPadres.setVisible(false);
        for (int i = 0; i < listaAsociados.size(); i++) {//padre
           if(listaAsociados.get(i).getClass().getSimpleName().equals(Padre.class.getSimpleName())){
               jCheckBoxPadres.setVisible(true);
           }
        }

        jCheckBoxPersonalNoDocente.setVisible(false);
        for (int i = 0; i < listaAsociados.size(); i++) {//personal no docente
           if(listaAsociados.get(i).getClass().getSimpleName().equals(NoDocente.class.getSimpleName())){
               jCheckBoxPersonalNoDocente.setVisible(true);
           }
        }

        jCheckBoxProfesores.setVisible(false);
        for (int i = 0; i < listaAsociados.size(); i++) {//profesor
           if(listaAsociados.get(i).getClass().getSimpleName().equals(Profesor.class.getSimpleName())){
               jCheckBoxProfesores.setVisible(true);
           }
        }

        jCheckBoxAlumnos.revalidate();
        jCheckBoxPadres.revalidate();
        jCheckBoxPersonalNoDocente.revalidate();
        jCheckBoxProfesores.revalidate();
        jCheckBoxTodos.revalidate();
        }
  }

2
задан 04.11.2019, 09:30
1 ответ

Swing он располагает классом BoxLayout, которая достаточно сходная с FlowLayout из AWT . Различие состоит в том, что с FlowLayout компоненты выстраиваются по прямой линии горизонтально в то время как с BoxLayout они могут смиряться так горизонтально как вертикально и кроме того, для этого случая в особенности, скрывать или сделав видимым компонент, преобразованный - automГЎtico, не необходимо использовать один revalidate() или repaint() из ясного способа.

Предполагая, что JCheckBox estГЎn в контейнере miContenedor bastarГ - в с чем-то asГ-:

miContenedor.setLayout(new BoxLayout(miContenedor,BoxLayout.Y_AXIS));

Y_AXIS определяет вертикальный порядок, а именно, размещать вверх дном каждый элемент.

Конечно в разделе BoxLayout documentaciГіn estГЎ она informaciГіn более подробно и относительно cГіmo использовать layout .

0
ответ дан 01.12.2019, 12:55
  • 1
    Действительно, эта очень хорошая solució n. Я изучаю и desconocí в это Layouts. Большое спасибо – Sqoaz 05.11.2019, 09:43

Теги

Похожие вопросы