将JPanel实例动态添加到JScrollPane

时间:2016-11-21 15:20:00

标签: java swing jpanel jscrollpane

我试图将预先创建的JPanel实例添加到更大的JPanel中,然后添加到JScrollPane中,但我无法让它工作。

我使用NetBeans创建容器,然后使用上下文菜单将其包含在滚动面板中。

要在运行时添加JPanel,请执行以下操作:

ActivityPanel actPanel;

for(Reservation r: mainFrame.getKiosko().getReservations()) {
    if( r.getUser().equals(user)) {
        actPanel = new ActivityPanel(r.getActivity(),mainFrame);
        actPanel.setHour(r.getHour());
        Dimension actDim = new Dimension(600, 100);
        actPanel.setPreferredSize(actDim);
        actPanel.setMaximumSize(actDim);
        actPanel.setMinimumSize(actDim);

        pnlReservations.add(actPanel);                
    }
}

但它只是不起作用。我应该在运行时创建ScrollPanel吗?如果是这样我应该怎么做?

pnlReservation按页面轴有一个BoxLayout。

1 个答案:

答案 0 :(得分:1)

actPanel.setPreferredSize(actDim);

不要尝试手动控制组件的首选大小。面板的大小应由您添加到面板的组件确定。

与您的pnlReservation相同,请勿对首选尺寸进行硬编码。布局管理器将根据添加到其中的组件的首选大小确定其首选大小。

然后,当您向其添加组件时,pnlReservation的首选大小会动态更改,滚动条会自动显示。