p1 = new JPanel();
p1.add(c);
c.setVisible(true);
c.validate();
add(p1,BorderLayout.CENTER);
add(new Label("A[-1]E=EA"),BorderLayout.NORTH);
add(ok,BorderLayout.SOUTH);

setTitle("结果检测");  //设置窗口标题
setSize(25*n*Prec*4+10,45*n*2+16);  //设置窗口尺寸
setLocation(150,100);
        setVisible(true);  //设置窗口可见
显示在窗口中的是一片空白,c是一个写有数字的jpanel对象.
但是如果不使用加载,直接用c代替p1的时候add(c,BorderLayout.CENTER);就可以正确显示内容.这是为什么
因为我需要在窗口中显示3个c,所以必须要加载,请问如何解决呢?!

解决方案 »

  1.   

    c.setVisible(true); 这个没有必要吧/
      

  2.   

    你的p1里面根本没任何东西怎么会显示呢?如果你想确定到底有没有把p1加进来,你可以p1.setBackground(Color.red);试试,肯定已经显示出红色了.
      

  3.   

    add(p1,BorderLayout.CENTER); 的this是什么?JFrame?
      

  4.   

    p1是jpanel的对象,默认的是flowlayout布局
      

  5.   

    add(p1,BorderLayout.CENTER); 的this是什么?JFrame?
    就是jframe
      

  6.   

    c是什么东西
    panel里面放panel这是绝对没有问题的。楼主不妨
    p1.add(new JLabel("xxx"));
    先测试一下,估计是c的问题引起!
      

  7.   

    c是什么东西 
    panel里面放panel这是绝对没有问题的。 楼主不妨 
    p1.add(new JLabel("xxx")); 
    先测试一下,估计是c的问题引起! 
    c是事先声明了的一个jpanel对象,里面有内容,单独显示也是成功的
    使用p1.add(new JLabel("xxx")); 是一定可以显示出xxx的,我已经试过了,
    但是只要加的是jpanel的对象,就显示不出来了
      

  8.   

    你试下,看看p1
    p1.setForeground(Color.BLACK);
    p1.fillRect(left, top, width, height);
      

  9.   

    不是显示不出来,是因为背景色的问题。
    p1.setForeground(Color.BLACK);
    c.setBackground(Color.green);
    看看
      

  10.   

    p1.setForeground(Color.BLACK);
    p1.fillRect(left, top, width, height);p1.setForeground(Color.BLACK); 
    c.setBackground(Color.green); 都不行啊,我过了
      

  11.   

    public class MyPanel extends JPanel
    下我构造了一个MyPanel(double a[][],int b,int c)
    然后我声明了一组MyPanel cresult = new MyPanel(result,R,Prec);
          MyPanel crelem = new MyPanel(relem,R,Prec);
          MyPanel cE = new MyPanel(E,R,Prec);
    被函数来调用    new Myshow(cresult,crelem,cE ,R,Prec,"!!");
    public class Myshow extends JFrame implements ActionListener
    下我构造的一个 Myshow(JPanel a,JPanel b,JPanel c,int n,int Prec,String s)p1 = new JPanel(); 
    p1.add(c); 
    add(p1,BorderLayout.CENTER); 
    add(new Label("A[-1]E=EA"),BorderLayout.NORTH); 
    add(ok,BorderLayout.SOUTH); setTitle("结果检测");  //设置窗口标题 
    setSize(25*n*Prec*4+10,45*n*2+16);  //设置窗口尺寸 
    setLocation(150,100); 
            setVisible(true);  //设置窗口可见 
    显示在窗口中的是一片空白,c是一个写有数字的jpanel对象. 
    但是如果不使用加载,直接用c代替p1的时候add(c,BorderLayout.CENTER);就可以正确显示内容.这是为什么 
    因为我需要在窗口中显示3个c,所以必须要加载,请问如何解决呢?!
      

  12.   

    答:没有问题啊。你的代码可以啊。以下是你的代码,可以正确运行啊。import javax.swing.*;
    import java.awt.*;
    public class Test extends JFrame { public Test(){
    JPanel p1 = new JPanel(); 
    JPanel c = new JPanel();
    c.add(new JLabel("你好"));
    p1.add(c); 
    c.setVisible(true); 
    c.validate(); 
    Container con=this.getContentPane();
    con.setLayout(new BorderLayout());
    con.add(p1,BorderLayout.CENTER); 
    con.add(new Label("A[-1]E=EA"),BorderLayout.NORTH); 
    con.add(new JButton("OK"),BorderLayout.SOUTH);  setTitle("结果检测");  //设置窗口标题 
    //setSize(25*n*Prec*4+10,45*n*2+16);  //设置窗口尺寸 
    setSize(400, 300);
    setLocation(150,100); 
    setVisible(true);  //设置窗口可见
            
    }

    public static void main(String[] args) {
    new Test();
    }}
      

  13.   

    这个问题看来是解决不了了,相同的程序,在我同学的电脑上执行就看得见,在我自己的电脑上就看不见,是不是celeronC100Hz的处理器处理不了这个问题啊