FlowLayout不会转到新行

时间:2019-07-05 22:54:17

标签: java swing layout-manager flowlayout

我试图使用FlowLayout在另一个JPanel中添加可变数量的JPanels(每个JPanels包含2个Label)。 如果添加的面板过多,而不是转到新行,它们就会消失在边界之外

我尝试了多种类型的布局,设置尺寸,最大尺寸,但没有任何变化。

public class AlbumView extends javax.swing.JFrame
{
    private Album A;

    public AlbumView()
    {
        initComponents();
        A = new Album();

        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        int w = this.getSize().width;
        int h = this.getSize().height;
        int x = (dim.width-w)/2;
        int y = (dim.height-h)/2;
        this.setLocation(x, y);

        pnlCategorie.setLayout(new FlowLayout(FlowLayout.TRAILING, 10, 10));

        /*
        Insert of many elements in the Album
        */

        aggiornaAlbum();
    }

    public void aggiornaAlbum()
    {
        for(int i = 0; i < A.getDim(); i++)
        {
            Categoria c = A.getCategoria(i);

            JPanel pnl = new JPanel();
            pnl.setName(c.getNome());
            JLabel lb1, lb2;
            ImageIcon img = new ImageIcon(c.getPhoto(0).getImg(95, 95));  //da cambiare lo 0 con un numero casuale tra le foto disponibili
            lb1 = new JLabel(img, JLabel.CENTER);
            lb2 = new JLabel(c.getNome(), JLabel.CENTER);


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

            pnl.setBorder(BorderFactory.createLineBorder(Color.black));
            pnl.add(lb1);
            pnl.add(lb2);
            //pnl.revalidate();
            //pnl.repaint();

            pnlCategorie.add(pnl);
        }

        //ADDED AFTER COMMENT, NOTHING CHANGED (but probably it's because i didn't get exaclty what to do
        pnlCategorie.revalidate();
        pnlCategorie.repaint();
    }

pnlCategorie是使用NetBeans swing创建的。

我希望在适合较大jPanel的jpanel数量之后,下一个转到新行

正在出现的示例(我使用的是示例图像,请不要判断): Example

0 个答案:

没有答案