如何在主类中向我的框架添加面板类

时间:2016-12-16 09:30:05

标签: java oop user-interface

我是oo的新手,我创建了一个类,它是我程序的大多数接口,我把它们放在一个类中。然后我想将我的Panel类添加到我的主类中,这样我的面板就会附加到我的Frame:

这是我试过的,我没有收到任何错误,当我运行我的程序但面板没有显示时:

小组类:

  public class PanelDriver extends JPanel {
       public JPanel p1, myg;
       public PanelDriver() {

       JPanel p1 = new JPanel();
       p1.setBackground(Color.CYAN);

      // Graphicsa myg = new Graphicsa();


    JTextArea txt = new JTextArea(5,20);
    txt.setText("test");
    p1.add(txt);

   }
}

主要课程:

public class GraphicMain {

    public static void main(String[] args) {
    JFrame frame = new JFrame("My Program");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(600, 600);

    PanelDriver panels = new PanelDriver();
    frame.getContentPane().add(panels);

    GridLayout layout = new GridLayout(1,2);
}

2 个答案:

答案 0 :(得分:0)

你需要一个超级电话(因为你扩展了JPanel,你不需要创建一个新的)和Panel类中的布局,如下所示:

public class CustomerTest extends JPanel {

    public CustomerTest() {
        super();
        this.setBackground(Color.CYAN);
        this.setLayout(new BorderLayout());
        JTextArea txt = new JTextArea();
        txt.setText("test");
        this.add(txt);
        this.setVisible(true);

    }
}

然后在你的主类中使用它,将框架设置为可见并显示内容。您必须在创建框架后设置框架的布局:

    JFrame frame = new JFrame("My Program");
    GridLayout layout = new GridLayout(1, 2);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(600, 600);

    CustomerTest panels = new CustomerTest();
    frame.getContentPane().setLayout(layout);;
    frame.add(panels);
    frame.setVisible(true);

答案 1 :(得分:0)

您的PanelDriver班级会创建p1 JPanel,但不会将其添加到任何内容中。

至少将其添加到PanelDriver本身:

this.add(p1);

请注意,正如您的代码所示,框架甚至不显示,请查看@XtremeBaumer的答案以修复该部分。