我试图将预先创建的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。
答案 0 :(得分:1)
actPanel.setPreferredSize(actDim);
不要尝试手动控制组件的首选大小。面板的大小应由您添加到面板的组件确定。
与您的pnlReservation
相同,请勿对首选尺寸进行硬编码。布局管理器将根据添加到其中的组件的首选大小确定其首选大小。
然后,当您向其添加组件时,pnlReservation
的首选大小会动态更改,滚动条会自动显示。