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



我有一个Jpanel,我必须从一个具有main方法的类中调用这个Jpanel。我已经在我的主方法中调用了 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 中解决此问题

我已经在我的主方法中调用了 jpanel 方法。但事实并非如此 显示。

JPanel 是一个通用的轻量级容器。它不能被itslef看到,你需要把它添加到一个WindowJFrameJDialog)中,以使其可见:

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(){...}
}

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

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

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

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

假设调用者方法初始化了 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());
}

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

最新更新