JavaSwing:新实例是如何工作的?

JavaSwing:新实例是如何工作的?,java,swing,user-interface,Java,Swing,User Interface,我有一个愚蠢的问题要问你。 在A的costructor中,我做了一个新的B(),变量p是一个具有paintComponent方法特性的JPanel的逻辑线程是什么 public class A extends JFrame{ private B p=null; public A(){ setTitle("New GUI"); setSize(300,300); setDefaultCloseOpe

我有一个愚蠢的问题要问你。 在A的costructor中,我做了一个新的B(),变量p是一个具有paintComponent方法特性的JPanel的逻辑线程是什么

    public class A extends JFrame{
       private B p=null;


       public A(){
          setTitle("New GUI");
          setSize(300,300);
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          add( p=new B() );
       }

        private class B extends JPanel{ 
          public void paintComponent(Graphics g){
             super.paintComponent(g);
             g.drawString( "Hello World", 150, 150 );
          }
       }

public class C{
   public static void main( String []args ){
          EventQueue.invokeLater( new Runnable(){
              public void run(){
                  JFrame fr=new A();
                  f.setVisible(true);             
              }
          });      
   }
  }
如果你想要更多的信息来理解我的问题,我在这里;)
谢谢。

更好的问题是:为什么要扩展
JFrame
,而不是一开始就使用它?你应该在A中的add方法之后执行setSize方法。JFrame方法必须按一定的顺序执行。@GilbertLeBlanc代码在add之前正确地使用setSize(x,y)。什么是可能的?@TimothyTruckle这个版本对你来说是正确的?因为你调用的是setSize()继承自JFrame的方法更好的问题是:为什么要扩展
JFrame
,而不是首先使用它?您应该在A中的add方法之后执行setSize方法。JFrame方法必须按特定顺序执行。@GilbertLeBlanc代码在add之前正确使用setSize(x,y)。有什么可能?@TimothyTruckle此版本对您来说是正确的?它之所以有效,是因为您正在调用从JFrame继承的一个的setSize()方法