无法将面板添加到scrollPane,应用程序没有变化

时间:2013-02-18 20:28:29

标签: java swing jpanel jscrollpane preferredsize

我将panel4添加到scrollPane,但我的应用程序没有更改。这是我的代码:

   public class Bill extends JPanel {
      //some Jlabels, JComboBox......
      public Bill(){

      JPanel panel1 = new JPanel();
      panel1.setLayout(new GridLayout(7,1,10,20));
      //add some labels to panel

      JPanel panel2 = new JPanel();
      panel2.setLayout(new GridLayout(7,4,10,10 ));

        //add some components to panel

      JPanel panel3=new JPanel(new GridLayout(4,1,10,10));
      panel3.add(CRTA);
      panel3.add(UKUPNO);
      panel3.add(jbtView);
      panel3.add(jbtCancel);

最后是panel4

     JPanel panel4=new JPanel();
     panel4.add(panel1, BorderLayout.WEST);
     panel4.add(panel2, BorderLayout.CENTER);

     JScrollPane scrollPane = new JScrollPane();
     scrollPane.getViewport().add( panel4 );  
     add(scrollPane,BorderLayout.CENTER);
     add(panel3, BorderLayout.SOUTH);

这就是我得到的

enter image description here

在rectange内是panel4(带数字和组合框的面板)

这是我改变大小的时候 enter image description here

没有滚动显示

2 个答案:

答案 0 :(得分:2)

JPanel panel4=new JPanel();
panel4.add(panel1, BorderLayout.WEST);
panel4.add(panel2, BorderLayout.CENTER);

默认情况下,JPanel使用FlowLayout,它始终遵循组件首选大小。您尝试指定的约束将被忽略。

您可以尝试:

JPanel panel4=new JPanel( new BorderLayout() );

答案 1 :(得分:2)

基本上,您应该在panel4上添加所有内容(包括panel3),然后在JScrollPane上添加panel4。之后,在JScrollPane的{​​{1}}上添加CENTER

也永远不要在JTabbedPane上调用setXXXSize方法。

修改

我想了一下你的想法:

enter image description here

我希望这可以帮助您了解用户界面。再次:不要调用JButton方法,让其他一些东西来确定组件的大小,例如字体大小,如果setXXXSize权限为“总计”JTextField或大小“热饮”小组中这些JLabel的图标。