2011-03-07 69 views
5

我有这个接口来创建。我有一个问题与JScrollPane:添加到JScrollPane的一个JPanel

enter image description here

我宣布一个网格布局(8,1,0,2)一个JPanel,我想8行显示在此面板中。 行是一个JPanel来,我设置大小,使8块板出现在大面板。 如果行数传8,我得到两列... 我加了一个JScrollPane,但它不会出现。在按钮的地方 测试按钮,滚动面板出现,但返回面板使它消失..

我该怎么办?

+1

能否请您提供一些代码,你是如何加入JScrollPane的? – u449355 2011-03-07 14:48:41

回答

4

我找到了一个解决方案:

package d06.m03; 

import java.awt.BorderLayout; 
import java.awt.Component; 
import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import javax.swing.JScrollPane; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.GridLayout; 
import java.awt.SystemColor; 
import java.awt.GridBagLayout; 
import java.awt.GridBagConstraints; 
import javax.swing.BoxLayout; 

public class ActionExample4 extends JFrame { 
    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        ActionExample4 frame = new ActionExample4(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public ActionExample4() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 778, 426); 
     getContentPane().setLayout(null); 

     JScrollPane scrollPane = new JScrollPane(); 
     scrollPane.setBounds(10, 101, 742, 276); 
     //scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
     getContentPane().add(scrollPane); 

     JPanel borderlaoutpanel = new JPanel(); 
     scrollPane.setViewportView(borderlaoutpanel); 
     borderlaoutpanel.setLayout(new BorderLayout(0, 0)); 

     JPanel columnpanel = new JPanel(); 
     borderlaoutpanel.add(columnpanel, BorderLayout.NORTH); 
     columnpanel.setLayout(new GridLayout(0, 1, 0, 1)); 
     columnpanel.setBackground(Color.gray); 

     for(int i=0;i<32;i++) { 
      JPanel rowPanel = new JPanel(); 
      rowPanel.setPreferredSize(new Dimension(300,30)); 
      columnpanel.add(rowPanel); 
      rowPanel.setLayout(null); 

      JButton button = new JButton("New button"); 
      button.setBounds(20, 5, 89, 23); 
      rowPanel.add(button); 

      if(i%2==0) 
       rowPanel.setBackground(SystemColor.inactiveCaptionBorder); 
     } 
    } 
}