为什么setVisible方法抛出错误,提示我的showPanel方法中找不到符号?由于我引用的是一个JPanel存储区,ArrayList因此没有任何意义,因此应该可以使用setVisible。
public class mainFrame extends javax.swing.JFrame {
/**
* Creates new form mainFrame
*/
private ArrayList list;
public mainFrame() {
initComponents();
this.setSize(500,500);
int h=this.getHeight();
int w=this.getWidth();
homePanel homePnl = new homePanel();
this.add(homePnl);
homePnl.setLocation(0,0);
homePnl.setSize(w,h);
homePnl.setVisible(true);
DeploymentInfoPanel infoPanel = new DeploymentInfoPanel();
this.add(infoPanel);
infoPanel.setLocation(0,0);
infoPanel.setSize(w,h);
atomServerPanel atomPnl = new atomServerPanel();
this.add(atomPnl);
atomPnl.setLocation(0,0);
atomPnl.setSize(w,h);
autoDeploymentPanel autoPnl = new autoDeploymentPanel();
this.add(autoPnl);
autoPnl.setLocation(0,0);
autoPnl.setSize(w,h);
list = new ArrayList<>();
list.add(homePnl);
list.add(infoPanel);
list.add(atomPnl);
list.add(autoPnl);
this.pack();
}
public void showPanel(int panelNum){
list.get(1).setVisible(true);
}
问题来源:Stack Overflow
private ArrayList list;
您没有指定要添加到ArrayList的Object的类型。因此,默认情况下,get()方法将返回Object的实例。没有setVisible(...)方法Object
定义ArrayList时,应使用:
private ArrayList<Component> list;
现在,编译器知道您正在将Component实例添加到ArrayList中。
实际上,编译器将检查以确保仅添加Component。
编译时,它也会摆脱警告消息。
另外,类名也应以大写字母开头。有时您会做,有时却不会:
DeploymentInfoPanel infoPanel = new DeploymentInfoPanel();
...
atomServerPanel atomPnl = new atomServerPanel();
...
autoDeploymentPanel autoPnl = new autoDeploymentPanel();
注意到论坛如何突出显示正确命名的类,从而使代码更易于阅读?
遵循Java约定并保持一致。
最后,要在框架的同一区域显示多个面板,您应该使用Card Layout。
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。