您的位置:程序门 -> java -> gui 设计



jpanel 为什么无法显示呢?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


jpanel 为什么无法显示呢?[已结贴,结贴人:rebelboy]
发表于:2007-01-04 23:47:58 楼主
请各位大哥帮看下下面的代码,我想remove掉原来的一个jpanel,然后在在它的位置上显示另一个jpanel,不知道这段代码为什么无法实现呢?帮帮忙,谢谢

import   java.awt.*;
import   javax.swing.*;
import   java.awt.event.actionevent;
import   java.awt.event.actionlistener;

public   class   frame1
        extends   jframe   {
    jpanel   contentpane;
    borderlayout   borderlayout1   =   new   borderlayout();
    jpanel   jpanel1   =   new   jpanel();
    jpanel   jpanel2   =   new   jpanel();
    jbutton   jbutton1   =   new   jbutton();
    jtextfield   jtextfield1   =   new   jtextfield();

    public   frame1()   {
        try   {
            setdefaultcloseoperation(exit_on_close);
            jbinit();
        }
        catch   (exception   exception)   {
            exception.printstacktrace();
        }
    }

    /**
      *   component   initialization.
      *
      *   @throws   java.lang.exception
      */
    private   void   jbinit()   throws   exception   {
        contentpane   =   (jpanel)   getcontentpane();
        contentpane.setlayout(borderlayout1);
        setsize(new   dimension(400,   300));
        settitle( "frame   title ");
        jpanel1.setborder(borderfactory.createetchedborder());
        jpanel2.setborder(borderfactory.createetchedborder());
        jbutton1.settext( "测试 ");
        jbutton1.addactionlistener(new   frame1_jbutton1_actionadapter(this));
        jtextfield1.settext( "jtextfield1 ");
        contentpane.add(jpanel1,   java.awt.borderlayout.north);
        jpanel1.add(jbutton1);
        contentpane.add(jpanel2,   java.awt.borderlayout.west);
        jpanel2.add(jtextfield1);
    }

    public   void   jbutton1_actionperformed(actionevent   e)   {
          panel   p=new   panel();
          contentpane.remove(jpanel2);
          contentpane.add(p,   java.awt.borderlayout.west);
          this.show();
    }
}

class   frame1_jbutton1_actionadapter
        implements   actionlistener   {
    private   frame1   adaptee;
    frame1_jbutton1_actionadapter(frame1   adaptee)   {
        this.adaptee   =   adaptee;
    }

    public   void   actionperformed(actionevent   e)   {
        adaptee.jbutton1_actionperformed(e);
    }
}
发表于:2007-01-05 09:39:271楼 得分:10
不好意思,   忍不住说一下:

代码好乱   ,都没有兴趣看下去了。

命名也让人分不清楚东西南北。   基础还待加强。
发表于:2007-01-05 11:06:012楼 得分:0
下面规范了一下,麻烦再给看下
=================================
import     java.awt.*;    
import     javax.swing.*;    
import     java.awt.event.actionevent;    
import     java.awt.event.actionlistener;    

public     class     testframe    
              extends     jframe     {    
      jpanel     contentpane;    
      borderlayout     borderlayout1     =     new     borderlayout();    
      jpanel     northpanel     =     new     jpanel();    
      jpanel   westpanel   =     new     jpanel();    
      jbutton   cmdtest   =     new     jbutton();    
      jtextfield   temptextfield   =     new     jtextfield();    

      public     testframe()     {    
              try     {    
                      setdefaultcloseoperation(exit_on_close);    
                      jbinit();    
              }    
              catch     (exception     exception)     {    
                      exception.printstacktrace();    
              }    
      }    

      /**    
          *     component     initialization.    
          *    
          *     @throws     java.lang.exception    
          */    
      private     void     jbinit()     throws     exception     {    
              contentpane     =     (jpanel)     getcontentpane();    
              contentpane.setlayout(borderlayout1);    
              setsize(new     dimension(400,     300));    
              settitle( "frame     title ");    
              northpanel.setborder(borderfactory.createetchedborder());
        westpanel.setborder(borderfactory.createetchedborder());
        cmdtest.settext( "测试 ");
        cmdtest.addactionlistener(new     frame1_jbutton1_actionadapter(this));
        temptextfield.settext( " ");    
              contentpane.add(northpanel,     java.awt.borderlayout.north);    
              northpanel.add(cmdtest);    
              contentpane.add(westpanel,     java.awt.borderlayout.west);
        westpanel.add(temptextfield);    
      }    

      public     void     cmdtest_actionperformed(actionevent     e)     {    
                  panel     p=new     panel();                 //新建一个panel对象
                  contentpane.remove(westpanel);     //移除westpanel
                  contentpane.add(p,     java.awt.borderlayout.west);   //加入新建的panel  
                  this.show();    
      }    
}    

class     testframe_cmdtest_actionadapter    
              implements     actionlistener     {    
      private     testframe     adaptee;    
      testframe_cmdtest_actionadapter(testframe     adaptee)     {    
              this.adaptee     =     adaptee;    
      }    

      public     void     actionperformed(actionevent     e)     {    
              adaptee.cmdtest_actionperformed(e);    
      }    
}
发表于:2007-01-05 12:36:483楼 得分:0
panel     p=new     panel();                
panel什么东西
不是jpanel?
发表于:2007-01-05 12:38:564楼 得分:5
我放在ide里面   全是红点..貌似很多错误~~还是代码没贴全?
发表于:2007-01-05 12:53:155楼 得分:0
……
无语~
发表于:2007-01-05 21:54:476楼 得分:0
唉,我也无语拉
发表于:2007-01-06 23:23:487楼 得分:0
主方法呢!
发表于:2007-01-07 05:10:178楼 得分:30
改了一下,lz的书比较老,   还在用show(),   lz查一下api就明白了。
在新的panel里加了一个label作标示。

main,   在这里调用frame:
---------------------------------------
public   class   main   {
       
        public   static   void   main(string[]   args)   {
                testframe   t   =   new   testframe();
                t.setvisible(true);
        }
}

修改lz的testframe:
-----------------------------------------------------
import   java.awt.*;
import   javax.swing.*;
import   java.awt.event.actionevent;
import   java.awt.event.actionlistener;

public   class   testframe   extends   jframe   {
        jpanel   contentpane;
        borderlayout   borderlayout1   =   new   borderlayout();
        jpanel   northpanel   =   new   jpanel();
        jpanel   westpanel   =   new   jpanel();
        jbutton   cmdtest   =   new   jbutton();
        jtextfield   temptextfield   =   new   jtextfield();
       
        public   testframe()   {
                try   {
                        setdefaultcloseoperation(exit_on_close);
                        jbinit();
                }   catch   (exception   exception)   {
                        exception.printstacktrace();
                }
        }
       
        /**
          *   component   initialization.
          *
          *   @throws   java.lang.exception
          */
        private   void   jbinit()   throws   exception   {
                contentpane   =   (jpanel)   getcontentpane();
                contentpane.setlayout(borderlayout1);
                setsize(new   dimension(400,   300));
                settitle( "frame   title ");
                northpanel.setborder(borderfactory.createetchedborder());
                westpanel.setborder(borderfactory.createetchedborder());
               
                cmdtest.settext( "测试 ");//空些行,   代码看得清楚些
                cmdtest.addactionlistener(new   testframe_cmdtest_actionadapter());
               
                contentpane.add(northpanel,   java.awt.borderlayout.north);
                northpanel.add(cmdtest);
               
                contentpane.add(westpanel,   java.awt.borderlayout.west);
                temptextfield.settext( "eeeeeeee ");
                westpanel.add(temptextfield);
        }
        class   testframe_cmdtest_actionadapter   implements   actionlistener   {
                public   void   actionperformed(actionevent   e)   {
         
                        jpanel   p=new   jpanel();   //新建一个panel对象
                        jlabel   label   =   new   jlabel( "new   west ");
                        p.add(label);
                        contentpane.remove(westpanel);   //移除westpanel                      
                        contentpane.add(p,   java.awt.borderlayout.west);   //加入新建的panel
                        refresh();
                }          
               
        }
        private   void   refresh(){
                this.validate();
        }
       
       
}
发表于:2007-01-07 15:23:069楼 得分:0
看帖必回.
发表于:2007-01-07 17:20:1110楼 得分:5
呵呵,确实应该补一下基础的


快速检索

最新资讯
热门点击