Почему pack () не изменяет размеры в обоих направлениях (размер увеличивается и уменьшается) - Swing - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть графический интерфейс с JFrame с JPanel, который переключается с помощью менеджера CardLayout.Код такой:

import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Stack;

public class VistaPrincipal extends javax.swing.JFrame {

    private Stack<String> nomVistes;

    /**
     * Creates new form VistaPrincipal
     */
    public VistaPrincipal() {
        nomVistes = new Stack<>();

        initComponents();

        this.setTitle("Dynamic Academic Scheduler");
        this.setResizable(false);

    }

    public void tornarInici() {
        System.out.println("[ INFO ] Solicitat tornar al menu inicial");
       ((CardLayout) ventana.getLayout()).first(ventana);
       pack();
    } 

    public void tornarEnrere() {
       System.out.println("[ INFO ] Solicitat tornar a la vista anterior amb nom: " + nomVistes.peek());
       ((CardLayout) ventana.getLayout()).show(ventana, nomVistes.peek());
       pack();
       nomVistes.pop();
    }

Эти методы действительно переключают JPanels.

       /**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

    ventana = new javax.swing.JPanel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new java.awt.CardLayout());

    ventana.setLayout(new java.awt.CardLayout());
    getContentPane().add(ventana, "card2");

    pack();
}// </editor-fold>//GEN-END:initComponents

initComponents () автоматически генерируется Netbeans.

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel ventana;
// End of variables declaration//GEN-END:variables

Это JPanel, где мы визуализируем остальные JPanels, через которые мы переключаемся.}

Эти методы позволяют мне просмотреть несколько JPanels, которые я сделал, дело в том, что я использую pack () , чтобы не возиться с зашитыми размерами (setSize ,imumSize, max ...), в начале это работает нормально, JPanels упакованы хорошо, пока я не переключусь на JPanel большего размера, чем другие, и в то время, когда я иду назад (через карты), JFrame придерживается большего размерапотребовалось ...

Итак, pack () работает над тем, чтобы увеличить панель и установить ее, а не над панелями меньшего размера, когда панель уже стала больше.Может быть, я неправильно понял, что делает pack () ?

Большое спасибо.

...