1
JPanel panel = new JPanel(new GridLayout(0,1));
JScrollPane contentpane = new JScrollPane(panel);
JButton add = new JButton("ADD");
add.actionListener(new ActionListener() {
public void actionPerformed(){
MyPanel newpanel = new MyPanel("title","Button"); //MyPanel is a class which extends JPanel and contains constructor MyPanel(String TitleToSet ,String ButtonTitleTOAdd)
panel.add(newpanel);
panel.repaint();
}) ;
我已经使用这个代码,并认为这将MyPanel动态地添加到网格布局,如果添加了更多的“MyPanel”的“面板”将滚动
。然而,情况并非如此,第一个“MyPanel”填充了整个“面板”并增加了第二个“MyPanel”(通过单击按钮“Add”),第一个“MyPanel”被缩小以为第二个添加空间。 。在添加更多内容时,所有“MyPanel”都适合在视口中,而不是使“面板”可滚动。如何动态添加这些“MyPanel”,并在添加更多内容时使“面板”可滚动。任何帮助,将不胜感激。动态添加固定高度的面板以一个JScrollPane
谢谢,它的工作完美,,我甚至使用绝对布局尝试。但是,我不明白的部分,当你设置首选大小,为什么你设置面板的宽度0? [panel.setPreferredSize(new Dimension(0,100 * panel.getComponents()。length));] – 2015-03-03 05:04:23
JScrollPane将视图宽度设置为max(view.getPreferredSize()。getWidth(),scrollPane.getWidth())。通过将视图的首选宽度设置为0,我确保滚动只发生在垂直方向。 – 2015-03-03 08:24:39