2

我有一个 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();

    }

}

面板类:

class B extends Jpanel{


    public void caller()
    {


    initComponents();
    }

  }

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

4

4 回答 4

2

我在 main 方法中调用了 jpanel 方法。但它没有显示。

JPanel是一个通用的轻量级容器。它不能被它自己看到,您需要将它添加到Window(通常是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(){...}
}

查看如何使用面板如何制作框架(主窗口)教程。

于 2013-11-06T13:14:34.300 回答
0

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

class B extends Jpanel{


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


    initComponents();
    }

  }

然后在main里面

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

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

}
于 2013-11-06T13:11:49.463 回答
0

首先,这与 Netbeans 无关——您的问题完全是关于如何编写可操作的 Swing 代码。

其次,您没有提供足够的信息让我们知道您了解 Swing 的工作原理,因此很难给您正确的建议。JPanel 不会自行显示所有内容。它必须进入一个为自己显示而构建的容器——通常是一个 JFrame。

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

于 2013-11-06T13:10:33.530 回答
0

将您的 japnel 类拖到 jframe 上(创建一个新的 jframe 类..将其命名为 jpanel_frame)然后从您想要调用 jpanel_frame 的现有 jframe 类调用 jpanel_frame 的构造函数。新 jpanel_frame().setVisible(true);

于 2018-04-06T19:15:11.187 回答