日期:2014-05-20  浏览次数:20703 次

JPanel如何调用另一个JPanel?
如题,调用了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分求助~~

------解决方案--------------------
用一个Jpanel就行啊!
------解决方案--------------------
JPanel默认的布局是FlowLayout,所以,大小的显示就不受控制了。而如果你把p1,也加一句“p1.setLayout(null);”结果就是正确的了。
------解决方案--------------------
你去查一下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);
}
}
------解决方案--------------------
楼主代码看似没问题啊!
另:JPanel的默认布局管理器是FlowLayout。
------解决方案--------------------
LZ要显示什么效果?
可以根据不同的布局而显示不同的效果
最简单的就是
Java code
p1.setLayout(null); //设置p1布局
p2.setSize(50, 50); //设置p2大小
p2.setLocation(20, 20); //设置p2位置 (大小和位置同时设置,可以用setBound(x,y,width,height))
p1.add(p2);