如题,调用了JPanel之后显示结果有不对~~~
贴上代码:import javax.swing.*;
import java.awt.*;
//import java.awt.event.*;
public class JFramePaneDemo {
    public static void main(String[]args){
        JFrame f=new JFrame("JFrame/JPanel测试");
        f.setSize(250,250);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        JPanel p1=new JPanel();
        p1.setSize(100,100);
        p1.setBackground(Color.RED);        JPanel p2=new JPanel();
        p2.setSize(50,50);//图形比例和设置比例不相同?
        p2.setBackground(Color.BLACK);        p1.add(p2);
        Container cp=f.getContentPane();
        cp.setLayout(null);
        cp.add(p1);
    }
}
100分求助~~

解决方案 »

  1.   

      cp.setLayout(null);请问为什么里面要用null啊
      

  2.   

    JPanel默认的布局是FlowLayout,所以,大小的显示就不受控制了。而如果你把p1,也加一句“p1.setLayout(null);”结果就是正确的了。
      

  3.   

    你去查一下JPanel的API文档哦,另外,附上改编后的代码如下:
    import javax.swing.*;
    import java.awt.*;
    public class JFramePaneDemo {
       public static void main(String[]args){
       JFrame f=new JFrame("JFrame/JPanel测试");
       f.setSize(250,250);
       f.setVisible(true);
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
       JPanel p1=new JPanel();
       p1.setBounds(0, 0, 100, 100);
       p1.setBackground(Color.RED);   JPanel p2=new JPanel();
       p2.setBounds(0,0,50,50);//图形比例和设置比例不相同?
       p2.setBackground(Color.BLACK);   p1.setLayout(null);
       p1.add(p2);
       f.setLayout(null);
       f.add(p1);
       }
    }
      

  4.   

    楼主代码看似没问题啊!
    另:JPanel的默认布局管理器是FlowLayout。
      

  5.   

    不知道楼主要什么效果 不过如果不用layout排版的话记得都设置成null不然经常大小/位置被默认layout改了
      

  6.   

    代码都没发到[code]标签中的帖子,一般看到就比较头疼。
      

  7.   

    LZ要显示什么效果?
    可以根据不同的布局而显示不同的效果
    最简单的就是
    p1.setLayout(null); //设置p1布局
    p2.setSize(50, 50); //设置p2大小
    p2.setLocation(20, 20); //设置p2位置 (大小和位置同时设置,可以用setBound(x,y,width,height))
    p1.add(p2);