在我的问题中,这是 Refectoring Class
。在本类(class)中,我使用 JPanel
通过单独的方法 panel()
添加按钮,并在 RefectClass
Constactor 中调用。
public class RefectClass extends JFrame {
JButton btnHome,btnBack;
JPanel btnContainer;
public RefectClass(){
super("Title Here");
setSize(350,300);
add(this.panel(),BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void panel(){
btnContainer=new JPanel();
btnHome=new JButton("Home");
btnBack=new JButton("Back");
btnContainer.add(btnHome);
btnContainer.add(btnBack);
}
}
现在如何将面板添加到 JFrame 中?当我尝试使用它时,它会出错。我无法使用 panel()
方法。
最佳答案
您的 panel() 方法返回 void - 它应该返回您新创建的 JPanel,以便您可以将它添加到 JFrame:
public JPanel panel(){
btnContainer=new JPanel();
btnHome=new JButton("Home");
btnBack=new JButton("Back");
btnContainer.add(btnHome);
btnContainer.add(btnBack);
return btnContainer;
}
但我要指出,这是一种非常不寻常的方法。当类中实际上只需要该方法时,您不必在返回新初始化成员的公共(public)方法中初始化成员。想象一个客户端从外部多次调用面板方法(因为它是公共(public)的)。 BtnContainer、btnHOme 和 BtnBack 将被覆盖,但它们不会出现在屏幕上。
这个方法看起来很简单——为什么不直接把它包含在你的构造函数中呢?
或者至少将方法设为 private
。
关于java - 如何在Frame中添加JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21644014/