设计安装多个jpanel的JFrame



我是一名新的java GUI开发人员,我有一个问题。

是否可以创建具有多个jpanel的Jframe ?我的想法是用添加在JPanel中的组件创建一个类,并从另一个类创建JFrame,添加JPanel类的多个对象。

此刻我正在做测试:

public class Principal {
    private JFrame window;
    public Principal(){
        window = new JFrame("Principal");        
    }
    /**
     * @return the finestra
     */
    public JFrame getFinestra() {
        return window;
    }
}`

子类

public class Childs {
    private JPanel panel;
    private JLabel text1;
    public Childs(){
        panel = new JPanel();
        text1 = new JLabel();
        text1.setText("TEXT");
        panel.add(text1);
    }
    /**
     * @return the panel
     */
    public JPanel getPanel() {
        return panel;
    }
}
<<p> TestFrame类/strong>
public class TestFrame {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Principal p = new Principal();
        Childs c = new Childs();
        Childs c2 = new Childs();
        p.getFinestra().add(c.getPanel());
        p.getFinestra().add(c2.getPanel());
        p.getFinestra().setVisible(true);
    }
}
`

在一个JFrame中有多个jpanel当然是可能的。您可以使用getContentPane()从JFrame中获得组件Container,在您的示例中,它将作为

p.getFinestra().getContentPane();

要了解如何将JPanel s放置到JFrame上,您应该学习一些Layout s。这是一个很好的资源,这个网站有很多:https://docs.oracle.com/javase/tutorial/uiswing/layout/index.html

例如使用FlowLayout(默认的)

p.getFinestra().getContentPane().setLayout(new FlowLayout());
p.getFinestra().getContentPane().add(c);
p.getFinestra().getContentPane().add(c2);
//It is also a good habit to call pack() before setting to visible
p.getFinestra().pack()
p.getFinestra().setVisible(true);

作为简短的英语课,child的复数形式是children

相关内容

  • 没有找到相关文章

最新更新