【问题标题】:Adding a JScrollPane in a dynamic JPanel在动态 JPanel 中添加 JScrollPane
【发布时间】:2014-03-08 16:09:54
【问题描述】:

我试图用JScrollPane 包围JPanel,但它就是不显示,这是为什么呢? 我的JPanel 由动态创建的组件组成。每当用户单击按钮时,都会创建一个新组件,从而使JPanel 更大(通过设置PrefferedSize)。但是JScrollPane 不会显示。请帮忙。谢谢。

scrpOfPanel = new JScrollPane();
    scrpOfPanel .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    scrpOfPanel .setBounds(54, 180, 565, 400);
    panel.add(scrpOfPanel);

    panel = new JPanel();

    panel.setBackground(Color.WHITE);
    panel.setPreferredSize(new Dimension (450, 50));
    panel.setLayout(null);

    scrpOfPanel .setViewportView(panel);
    lblAdd = new JLabel();
    lblAdd.setBounds(420, 6, 38, 25);
    lblAdd.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            count++;
            txtItem= new JTextField();
            txtItemNumber = new JTextField();
            lblRemove = new JLabel();
            l
            panel.add(txtItem);
            panel.add(txtItemNumber);
            panel.add(lblRemove);
            if(count>0){
                x+=30;
                y+=30;
                lblRemove.setBounds(420,6+y, 125, 25);
                txtItem.setBounds(225,6+y, 182, 27);
                txtItemNumber.setBounds(35, 6+y, 182, 27);

                if(panel.getComponentCount() >9){

                panel.setPreferredSize(new Dimension(100+y,50+y));
                panel.add(txtItem);
                panel.add(txtItemNumber);
                panel.add(lblRemove);

                }
            }

        }

    });

    panel.add(lblAdd);

【问题讨论】:

  • 添加滚动窗格 panel.add(scrpOfPanel); ,然后立即将 panel 设为新的 JPanel - panel = new JPanel();。您希望通过它完成什么?

标签: java swing jpanel jscrollpane


【解决方案1】:

不要使用空布局。 Swing 旨在与布局管理器一起使用。

根据我在您的代码中可以看出,您每次单击按钮时都会向面板添加一行 3 个组件。

这可以通过使用布局管理器轻松解决。也许从使用垂直 BoxLayout 的主面板开始。然后,当您单击一个按钮时,您将创建一个使用水平 BoxLayout 的面板并将您的 3 个组件添加到此面板。然后将此面板添加到主面板。

那么你需要使用:

mainPanel.revalidate();
mainPanel.repaint();

确保调用布局管理器并重新绘制组件。然后布局管理器将为您管理首选尺寸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多