我有一个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看到,你需要把它添加到一个Window
(JFrame
或JDialog
)中,以使其可见:
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);