import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public  class panel extends JDialog 
{
  
  Panel panel1 = new Panel();
  Panel panel2 = new Panel();
  JButton jb1=new JButton("1");
  JButton jb2=new JButton("2");
  JButton jb3=new JButton("3");
  JButton jb4=new JButton("4");
  JButton jb5=new JButton("5");
  JButton jb6=new JButton("6");
  JButton jb7=new JButton("7");
  JButton jb8=new JButton("8");
  JButton jb9=new JButton("9");
  public panel(){};
  public panel(Frame frame, String title) 
  {
        super(frame,title);
    try
    {
    panel1.setLayout(new GridLayout(2,1));
    panel2.setLayout(new GridLayout(3,3));    
    Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
    getContentPane().add(panel1,BorderLayout.NORTH);
    getContentPane().add(panel2,BorderLayout.SOUTH);
    panel2.add(jb1);
    panel2.add(jb2);
    panel2.add(jb3);
    panel2.add(jb4);
    panel2.add(jb5);
    panel2.add(jb6);
    panel2.add(jb7);
    panel2.add(jb8);
    panel2.add(jb9);
    setSize(300,300);
    this.setResizable(false);
    this.setLocation((scrSize.width-getSize().width)/2,(scrSize.height-getSize().height)/2);
    setVisible(true);
    }
    catch(Exception ex) 
    {
      ex.printStackTrace();
    }
  }
  public static void main(String[] args)
  {
      panel p=new panel();
  }}
程序没错,为什么运行却不显示呀?还有就是。谁能给我写个小程序,就是一个JFrame里有三个panel,一个在最上面,里面放的是一个JTextField,下面剩下的部分放两个,总的来讲就像个计算器的排版,下面放两个panel,左边的里面格式是GridLayout(3,3),用来放1~9数字键的。就这样就行了,谁可以帮我这个忙,谢谢了

解决方案 »

  1.   

    你的程序new panel(); 这个构造方法中什么也没做啊。
    你的工作全部写在 public panel(Frame frame, String title)  这个构造方法中了。
    你应该调用这个方法进行对象的创建
      

  2.   

    panel p = new panel(new Frame(), "hello");//这样实例化!
    你就根本没调用用参数的构造方法!
      

  3.   

    应该调用你的
    public panel(Frame frame, String title)  这个构造方法 。
      

  4.   

    你调用了类中的new panel()方法; 没有调用显示窗体的panel(Frame frame, String title) 方法.public static void main(String[] args) 
      { 
          panel p=new panel(); //////里面加点东西就行了,我想可以显示了
      } 
      

  5.   

    二楼的 
    panel p = new panel(new Frame(), "hello");//这样实例化! 
    你就根本没调用用参数的构造方法!我试过了,修改后可以显示 
      

  6.   


        getContentPane().add(panel1,BorderLayout.NORTH); 
        getContentPane().add(panel2,BorderLayout.SOUTH); // 改成BorderLayout.CENTER    panel1.add(new JTextField()); // 上面的JTextField
        Panel panel3 = new Panel();   // 右面的信息,想加什么按钮自己加
        getContentPane().add(panel3,BorderLayout.EAST);
      

  7.   

    恩,我解决了,最后再问个问题,为什么要加extends JDialog,不然就会出错
      

  8.   

    你用的setLayout方法,add方法等等都是JDialog从这继承过来的,你不继承,你的类是只不过是继承object的一般类!
      

  9.   

    同意,要么就得先new出来个JFrame然后调用它的setLayout以及add方法。总之你要把控件放在一个容器上面,只要你继承了一个容易类,那么你所写的类 也就是一个容器了,自然拥有容器的方法