JPanel有一个继承的方法add
add
public void add(Component comp,
Object constraints)将指定的组件添加到此容器的尾部。同时通知布局管理器使用指定的 constraints 对象将组件添加到此容器的布局中。对于 addImpl(java.awt.Component, java.lang.Object, int) 来说,这是一种便捷的方法。
注:如果已经将某个组件添加到显示的容器中,则必须在此容器上调用 validate,以显示新的组件。如果添加多个组件,那么可以在添加所有组件之后,通过只调用一次 validate 来提高效率。
参数:
comp - 要添加的组件
constraints - 表示此组件的布局约束的对象
从以下版本开始:
JDK1.1
另请参见:
addImpl(java.awt.Component, java.lang.Object, int), validate(), JComponent.revalidate(), LayoutManager
这个应该怎样理解?
如果我添加的constraints是String类型的怎样理解?我搜到一个一样问题好像没有完全解决啊http://topic.csdn.net/u/20081015/12/fa35f21f-8e02-46b5-93d1-45ac57aac846.html
add
public void add(Component comp,
Object constraints)将指定的组件添加到此容器的尾部。同时通知布局管理器使用指定的 constraints 对象将组件添加到此容器的布局中。对于 addImpl(java.awt.Component, java.lang.Object, int) 来说,这是一种便捷的方法。
注:如果已经将某个组件添加到显示的容器中,则必须在此容器上调用 validate,以显示新的组件。如果添加多个组件,那么可以在添加所有组件之后,通过只调用一次 validate 来提高效率。
参数:
comp - 要添加的组件
constraints - 表示此组件的布局约束的对象
从以下版本开始:
JDK1.1
另请参见:
addImpl(java.awt.Component, java.lang.Object, int), validate(), JComponent.revalidate(), LayoutManager
这个应该怎样理解?
如果我添加的constraints是String类型的怎样理解?我搜到一个一样问题好像没有完全解决啊http://topic.csdn.net/u/20081015/12/fa35f21f-8e02-46b5-93d1-45ac57aac846.html
解决方案 »
- HttpClient 模拟登录后如何保持session
- 请问学JAVA的哪方面工作好找些呢??
- 弱问 请问Sun公司有没有提供实现类库的源代码,比如想Console类的源代码
- System.currentTimeMillis()时间问题?
- 请问如何给显示的图像以及图像之间的连线分别添加事件处理
- java远程连接SQL数据库问题
- 如何改变JOptionPane类创建的简单对话框的字体?有没有方法?
- 请问我该怎样改才能正常编译啊?
- 请问手机编程和JAVA有关系吗?
- 请问如何把一个resultset转为collection? 请帮忙。
- java调用别的程序,别的程序生成一个文件失败,单独运行就可以
- jdbc如何用代码创建sqlite数据库?
protected void addImpl(Component comp,
Object constraints,
int index)将指定组件添加到此容器的指定索引所在的位置上。此方法还通知布局管理器,通过 addLayoutComponent 方法,使用指定的约束对象将组件添加到此容器的布局中。
这些约束是由正使用的特定布局管理器定义的。例如,BorderLayout 类定义了五个约束:BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.EAST、BorderLayout.WEST 和 BorderLayout.CENTER。 GridBagLayout 类需要一个 GridBagConstraints 对象。如果传递正确的约束对象类型时失败,则会导致 IllegalArgumentException。 如果当前布局管理器实现了 LayoutManager2,则在其上调用 LayoutManager2.addLayoutComponent(Component,Object)。如果当前布局管理器没有实现 LayoutManager2,并且约束是一个 String,则在其上调用 LayoutManager.addLayoutComponent(String,Component)。 如果该组件不是此容器的祖先容器,并且有一个非 null 父组件,则在将该组件添加到此容器之前,从其当前父组件中移除它。 在其他所有添加方法引用此方法时,如果某个程序需要追踪每个添加到容器的请求,那么这就是要重写的方法。被重写的方法通常应该包括一个对该方法的超类版本的调用:
super.addImpl(comp, constraints, index)
参数:
comp - 要添加的组件
constraints - 表示此组件的布局约束的对象
容器列表中插入组件的位置;其中 - -1 表示将组件追加到尾部
抛出:
IllegalArgumentException - 如果 index 无效;如果 comp 是此容器的子容器,则有效范围是 [-1, getComponentCount()-1];如果组件不是此容器的子容器,则有效范围是 [-1, getComponentCount()]
IllegalArgumentException - 如果 comp 是此容器的祖先容器
IllegalArgumentException - 如果向容器添加一个窗口
NullPointerException - 如果 comp 为 null
从以下版本开始:
JDK1.1
另请参见:
add(Component), add(Component, int), add(Component, java.lang.Object), LayoutManager, LayoutManager2
BorderLayout.CENTER 的值就是string类型的 值为center
再者API中也提到了如果使用的是gridbaglayout的话 那么他加入的约束必须是
GridBagConstraints 对象 GridBagConstraints 对象指定了 此组件在layout中的位置 高度 描点 间隔等等 有了指定的约束 布局管理器才知道将comp放在什么位置啊
当然你的panel此时谁知的layout代码为setLayout(new BorderLayout());
borderlayout就是一个layoutmanager
gridbag的同样也是一样理解 并没有所谓的add(Component c,String ss)方法 如果有这个方法至少borderlayout的约束就失效了
不用太去关心那个String参数.
CardLayout card=new CardLayout(5,5);
JPanel pane=new JPanel(card);// 这个
Jbutton btOne=new JButton("one");
JButton btTwo=new JButton("two");
pane.add(btOne,"p1");
pane.add(btTwo,"p2");
btOne.addActionLisetener(new ActionLisetener(){car.show(pane,"p1")});
btTwo.addActionLisetener(new ActionLisetener(){car.show(pane,"p2")});
理解不深刻,请指教!