·一般性设置控件位置和大小:使用setBounds(intintintint)设置控件坐标大小但必须加setLayout(null); ·控件被添加的先后顺续决定控件是否可见即:窗口按层来显示控件/*先添加的控件放在第一层后添加的放在后一层*/如果先添加的控件大小大于后添加的并两控件处于同一位置则先添加的控件覆盖后添加的因此如果想然所有控件都可见则需将在同一位置的两控件择面积小的先添加而后才是面积大的 ·固定座标(根据绝对座标对控件定位称为绝对定位)的问题:标签内的字符串可能被翻译成另一种语言或者用户可能调整了窗口的大小在两种情况下按钮都会保持固定在它们最初的位置 ·使用固定座标的优点:自由设置控件位置大小 ·使用固定座标的缺点:窗口改变时许多控件无法显示字体变化后按钮标签等控件无法显示其全部内容 ·pack()的使用:Window 组件提供 pack() 方法来解决这个问题当向窗口发送 pack() 时窗口会调整自身大小从而提供足够的空间来显示其框架中包含的所有控件设计 GUI 屏幕时总是指定固定的大小是危险的此外控件的位置不应该以 x 和 y 或宽度和高度的形式表示每个控件包含动态计算首选大小的方法应该使用这些方法来给您的 GUI 带来最大的流动性 ·计算控件大小的方法: 按钮 |显示当前标签文本 |setLabel(String)或 setText(String) 文本 |显示很多字符 |setColumns(int) 标签 |显示标签的文本 |setLabel(String)或 setText(String) 文本域 |显示很多字符的行和列 |setRows(int)和 setColumns(int) (一)例:使用setBounds(intintintint)设置控件坐标大小必须加setLayout(null); import javaawt*; import javaawtevent*; public class hh { Frame frame; Button ab; public void go() { frame = new Frame(); framesetBounds(); framesetBackground(Colorred); framesetLayout(null);//必须加 a=new Button(a); b=new Button(b); frameadd(a); asetBounds(); frameadd(b); bsetBounds(); framesetSize(); framesetVisible(true); } public static void main(String kio[]) { hh nu=new hh(); nugo(); } } ()结果:正常的按照上述所要求的制做了确定控件坐标和大小的窗口 ()错误: ~:使用setBounds(intintintint)设置控件坐标大小时必须加setLayout(null); 按钮b占了全窗口按钮a正常 framesetLayout(null); (二)例:添加Panel并设置同时测试先后?渠汵????o??顺次带来的控件覆盖 import javaawt*; import javaawtevent*; public class hh { Frame frame; Button ab; Panel c;//添加一面板 public void go() { frame = new Frame(); framesetBounds(); framesetBackground(Colorred); framesetLayout(null); a=new Button(a); b=new Button(b); c=new Panel(); csetBounds();//设其位置大小 csetBackground(Colorblue); frameadd(a); asetBounds(); frameadd(b); frameadd(c);//在b后添加它 bsetBounds(); framesetSize(); framesetVisible(true); } public static void main(String kio[]) { hh nu=new hh(); nugo(); } } ()结果:控件全部显示如果将frameadd(c);置于frameadd(b);之前则c面板无法查看 ()表明:控件被添加的先后顺续决定控件是否可见即:窗口按层来显示控件先添加的控件放在第一层后添加的放在后一层如果先添加的控件大小大于后添加的并两控件处于同一位置则先添加的控件覆盖后添加的因此如果想然所有控件都可见则需将在同一位置的两控件择面积小的先添加而后才是面积大的 (三)例:窗口使用pack()调整自身大小 import javaawt*; import javaawtevent*; public class hh { Frame frame; Button ab; public void go() { frame = new Frame(); framesetLayout(new FlowLayout()); a=new Button(l); b=new Button(okokkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk); frameadd(a); frameadd(b); framepack();//缺少framesetSize(); framesetVisible(true); } public static void main(String kio[]) { hh nu=new hh(); nugo(); } } ()结果:窗口自动调节并显示出所有控件 ()表明:Window 组件提供 pack() 方法来解决这个问题当向窗口发送 pack() 时窗口会调整自身大小从而提供足够的空间来显示其框架中包含的所有控件设计 GUI 屏幕时总是指定固定的大小是危险的此外控件的位置不应该以 x 和 y 或宽度和高度的形式表示每个控件包含动态计算首选大小的方法应该使用这些方法来给您的 GUI 带来最大的流动性 (四)例:使用setColumns(int)设置组件大小 import javaawt*; import javaawtevent*; public class hh { Frame frame; TextField txt; public void go() { frame = new Frame(); framesetLayout(new FlowLayout()); txt=new TextField(); txtsetColumns(); frameadd(txt); framepack(); framesetVisible(true); } public static void main(String kio[]) { hh nu=new hh(); nugo(); } } |