在一个JPanel中包含有另外两个JPanel组件,一个A显示背景,另一个B显示其他一些组件,B的范围小于A,且覆盖A的中间一部分,可行吗?请问如何作?多谢了!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tainy_zhang】截止到2008-06-25 19:43:19的历史汇总数据(不包括此帖):
    发帖数:5                  发帖分:400                
    结贴数:5                  结贴分:400                
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   


    class MyPanel extends Panel{
        
        
        void go(){
         this.setLayout(new BorderLayout());
         Panel p1=new Panel();//背景
            Panel p2=new Panel();
            this.add(p1);
            p1.setLayout(new GridLayout(3,3));
            p1.add(p2,5);
        }
    }应该可以的
      

  3.   

    class MyPanel extends Panel{
        
        
        void go(){
            this.setLayout(new BorderLayout());
            Panel p1=new Panel();//背景
            Panel p2=new Panel();
            this.add(p1);
            p1.setLayout(new GridLayout(3,3));
            p1.add(p2,5);
        }
    }
      

  4.   

    两个panel的载体都是同一个Panelimport java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;public class SubPanel extends JFrame {    private JPanel backPanel = new JPanel();    private JPanel forePanel = new JPanel();    public SubPanel() {
            Container contentPane = this.getContentPane();
            contentPane.add(backPanel);
            backPanel.setSize(300, 300);
            backPanel.setBackground(Color.BLUE);
            forePanel.setPreferredSize(new Dimension(50, 50));
            forePanel.setSize(new Dimension(50, 50));
            JButton button = new JButton("JButton");
            button.setBackground(Color.RED);
            button.setForeground(Color.YELLOW);
            forePanel.add(button);
            contentPane.add(forePanel);
            forePanel.setOpaque(false);
            contentPane.setComponentZOrder(forePanel, 0);
        }    /**
         * @param args
         */
        public static void main(String[] args) {
            SubPanel sp = new SubPanel();
            sp.setVisible(true);
            sp.setSize(300, 300);
            sp.setDefaultCloseOperation(EXIT_ON_CLOSE);
        }}
      

  5.   

    JPanel jPanel1=new JPanel();JPanel jPanelA=new JPanel();
    JPanel jPanelB=new JPanel();JButon jButton1=new JButton();
    JButon jButton2=new JButton();JLabel jLabel1=new JLabel();
    JLabel jLabel2=new JLabel();jPanelB.add(jLabel1);
    jPanelB.add(jLabel2);jPanelB.add(jButton1);
    jPanelB.add(jButton2);jPanel1.add(jPanelA);
    jPanelA.add(jPanelB);//再设置一下各JPanel组件的Layout
      

  6.   

    3楼的应该是可以,不过我得到了如下运行时刻异常:
    Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
    at java.awt.Container.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
      

  7.   

    这个问题我用其他办法解决啦,不过有了一个内部组件不显示的问题,请关注:
    http://topic.csdn.net/u/20080627/10/0d6cb299-b930-468f-8be7-0e8fa9ede981.html