GroupLayout.Group中的addGap(int)问题

时间:2011-05-06 10:28:39

标签: java swing user-interface layout

这是片段:

JPanel logoPanel=new JPanel();
GroupLayout logoLayout=new GroupLayout(logoPanel);
logoPanel.setLayout(logoLayout);
logoPanel.setHorizontalGroup((GroupLayout.Alignment.BASELINE).addGap(100,100));
logoPanel.setVerticalGroup((GroupLayout.Alignment.BASELINE).addGap(100,100));

这些是cmd上产生的错误:

MainPageTypo.java:27: cannot find symbol
logoPanel.setHorizontalGroup((GroupLayout.Alignment.BASELINE).addGap(100,100));
                                                            ^
symbol:   method addGap(int,int)
location: class Alignment
MainPageTypo.java:28: cannot find symbol
logoPanel.setVerticalGroup((GroupLayout.Alignment.BASELINE).addGap(100,100));
                                                          ^
symbol:   method addGap(int,int)
location: class Alignment
2 errors

为什么会出现这些错误,我该如何解决?

2 个答案:

答案 0 :(得分:3)

根据JavaDoc GroupLayout.Group只有方法addGap(int)addGap(int, int, int),因此您要么缺少一个参数,要么过多。

addGap(100)因此就足够了。

编辑2:

您在addGap(...)上调用GroupLayout.Alignment这是一个枚举,根本不提供该方法:第28行包含(GroupLayout.Alignment.BASELINE).addGap(100,100)

我想您要致电logoLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)logoLayout.createSequentialGroup()来创建群组。

您还在JPanel上调用setHorizontalGroup(...)(和setVerticalGroup(...)),而不是在也应该生成错误的GroupLayout上调用。将其更改为logoLayout.setHorizontalGroup( ... );

编辑:对消息含义的简短提示

symbol:   method addGap(int,int)   //the symbol that is searched for
location: class Alignment   //the symbol (method) is searched in class Alignment or its class hierarchy
MainPageTypo.java:28: cannot find symbol  //the compiler cant find the symbol stated above which is used at line 28 in file MainPageTypo.java 
logoPanel.setVerticalGroup((GroupLayout.Alignment.BASELINE).addGap(100,100)); // this is the content of line 28

答案 1 :(得分:3)

我建议您也将代码段更正为正确的表单,该表单位于您提供的代码中。

从我看到你得到的结果:

IllegalStateException: Baseline must be used along vertical axis

这意味着无法在基线上创建第一个并行组,例如更改它领先。 它编译。<​​/ p>