我是一名新的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