如何从netbeans中的另一个类方法调用java swing jpanel?

时间:2013-11-06 13:02:29

标签: java swing netbeans

我有一个Jpanel,我必须从具有main方法的类中调用此Jpanel。我在main方法中调用了jpanel方法。但它没有显示。那么如何在netbeans中做到这一点?

public class A
{

 public static void main(String[] args)
    {
        // TODO code application logic here

       B b=new B();
       b.caller();

    }

}

Jpanel班级:

class B extends Jpanel{


    public void caller()
    {


    initComponents();
    }

  }

其中init组件方法是私有的。所以我从类中的另一个方法调用了这个公共但没有任何工作。帮助在netbeans中解决这个问题

4 个答案:

答案 0 :(得分:2)

  

我在main方法中调用了jpanel方法。但事实并非如此   显示。

JPanel是一个通用的轻量级容器。它无法通过它显示,您需要将其添加到Window(tip JFrameJDialog)以使其可见:

public static void main(String[] args){
    SwingUtilities.invokeLater(new Runnable(){
        @Override
        public void run(){
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            frame.getContentPane().add(new B());
            frame.pack();
            frame.setVisible(true);
        }
    });
}

class B extends JPanel {

    public B() {
        initComponents();
    }

    private void initComponents(){...}
}

查看How to Use PanelsHow to Make Frames (Main Windows)教程。

答案 1 :(得分:0)

首先,这与Netbeans无关 - 你的问题完全在于如何编写操作Swing代码。

其次,您没有足够的信息让我们知道您了解Swing的工作原理,因此很难给您正确的建议。 JPanel并不能单独显示所有内容;它必须进入一个独立显示的容器 - 通常是一个JFrame。

关于从另一个类调用JPanel的问题,即使是一个本身没有(其他)对UI组件的引用的类,也可以归结为一个不超过50行的完整程序。试着写一下,然后问一个关于你遇到什么问题的问题。

答案 2 :(得分:0)

假设调用者方法初始化jpanel,它应该返回一个JPanel,然后你可以将其添加到你的JFrame

class B extends Jpanel{


    public JPanel caller()  // notice no void, but JPanel
    {


    initComponents();
    }

  }

然后在主

public static void main(String[] args)
{
    // TODO code application logic here

   B b=new B();
   myframe.setContentPane(b.caller());

}

答案 3 :(得分:0)

将你的japnel类拖到jframe上(创建一个新的jframe class..name it jpanel_frame) 然后从已经存在的jframe类中调用jpanel_frame的构造函数,从中调用jpanel_frame  。 new jpanel_frame()。setVisible(true);