包括来自外部java文件的面板?

时间:2012-07-16 20:43:35

标签: java swing jpanel

是否可以将jpanel包含在另一个java文件的容器中?假设我有2个java文件fileA.javafileB.java。我想在fileB.java的容器中添加fileA.java的整个显示内容。这可能吗?只是混乱运行很长一段时间。提前谢谢。

2 个答案:

答案 0 :(得分:4)

您可以创建另一个文件/ cass extends JPanel,然后由于 是JPanel,您可以将其添加到任何其他文件中。例如:

FileA.java

public class FileA {
    public FileA() { 
        JFrame jf = new JFrame();
        jf.setLayout(new BorderLayout());

        FileB b = new FileB();

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setBounds(100,100,800,600);
        jf.setVisible(true);

        add(b, BorderLayout.CENTER);
    }
    public static void main(String[] args) {
        new FileA();
    }
}

FileB.java

public class FileB extends JPanel {
    public FileB() { 
        setLayout(new BorderLayout());
        add(new JLabel("Example"), BorderLayout.CENTER);
    }
}

或者您只需将JPanel作为另一个文件中的字段并使用getter方法访问它。

示例:

FileC.java

public class FileC {

    private JPanel panel;

    public FileC() {
        panel = new JPanel();
        panel.add(new JLabel("Example 2"));
    }

    public JPanel getPanel() {
        return panel;
    }

}

答案 1 :(得分:3)

是的,你可以。

1-如果fileB类扩展JPanel,则创建fileB的实例并将其添加到您拥有的任何容器中:

fileB panel = new fileB();
container.add(panel);

2-如果fileB将JPanel作为字段,那么如果是公共字段,则需要自己访问它,否则需要通过getter方法访问它:

fileB f = new fileB();
JPanel panel = f.getPanel(); // or f.panel if the panel is a public field
container.add(panel);