分享
 
 
 

关于GUI界面的布局与建立

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

?一般性设置控件位置和大小:使用.setBounds(int,int,int,int)设置控件坐标大小.但必须加.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(int,int,int,int)设置控件坐标大小.必须加.setLayout(null);

import java.awt.*;

import java.awt.event.*;

public class hh

{

Frame frame;

Button a,b;

public void go()

{

frame = new Frame();

frame.setBounds(100,100,150,70);

frame.setBackground(Color.red);

frame.setLayout(null);//必须加

a=new Button("a");

b=new Button("b");

frame.add(a);

a.setBounds(10,30,50,25);

frame.add(b);

b.setBounds(70,30,100,28);

frame.setSize(200,500);

frame.setVisible(true);

}

public static void main(String kio[])

{

hh nu=new hh();

nu.go();

}

}

(1)结果:正常的按照上述所要求的制做了确定控件坐标和大小的窗口.

(2)错误:

~1:使用.setBounds(int,int,int,int)设置控件坐标大小时必须加.setLayout(null);

按钮b占了全窗口按钮a正常.

frame.setLayout(null);

(二)例:添加Panel并设置.同时测试先后?渠???? ?o??顺次带来的控件覆盖.

import java.awt.*;

import java.awt.event.*;

public class hh

{

Frame frame;

Button a,b;

Panel c;//添加一面板

public void go()

{

frame = new Frame();

frame.setBounds(100,100,150,70);

frame.setBackground(Color.red);

frame.setLayout(null);

a=new Button("a");

b=new Button("b");

c=new Panel();

c.setBounds(70,30,100,500);//设其位置大小

c.setBackground(Color.blue);

frame.add(a);

a.setBounds(10,30,50,25);

frame.add(b);

frame.add(c);//在b后添加它

b.setBounds(70,30,100,28);

frame.setSize(200,500);

frame.setVisible(true);

}

public static void main(String kio[])

{

hh nu=new hh();

nu.go();

}

}

(1)结果:控件全部显示.如果将frame.add(c);置于frame.add(b);之前则c面板无法查看.

(2)表明:控件被添加的先后顺续决定控件是否可见.即:窗口按层来显示控件.先添加的控件放在第一层后添加的放在后一层.如果先添加的控件大小大于后添加的并两控件处于同一位置则先添加的控件覆盖后添加的.因此如果想然所有控件都可见则需将在同一位置的两控件择面积小的先添加而后才是面积大的.

(三)例:窗口使用pack()调整自身大小

import java.awt.*;

import java.awt.event.*;

public class hh

{

Frame frame;

Button a,b;

public void go()

{

frame = new Frame();

frame.setLayout(new FlowLayout());

a=new Button("l");

b=new Button("okokkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");

frame.add(a);

frame.add(b);

frame.pack();

//缺少frame.setSize(200,500);

frame.setVisible(true);

}

public static void main(String kio[])

{

hh nu=new hh();

nu.go();

}

}

(1)结果:窗口自动调节并显示出所有控件.

(2)表明:Window 组件提供 pack() 方法来解决这个问题。当向窗口发送 pack() 时,窗口会调整自身大小,从而提供足够的空间来显示其框架中包含的所有控件。设计 GUI 屏幕时,总是指定固定的大小是危险的。此外,控件的位置不应该以 x 和 y 或宽度和高度的形式表示。每个控件包含动态计算首选大小的方法,应该使用这些方法来给您的 GUI 带来最大的流动性。

(四)例:使用setColumns(int)设置组件大小

import java.awt.*;

import java.awt.event.*;

public class hh

{

Frame frame;

TextField txt;

public void go()

{

frame = new Frame();

frame.setLayout(new FlowLayout());

txt=new TextField();

txt.setColumns(20);

frame.add(txt);

frame.pack();

frame.setVisible(true);

}

public static void main(String kio[])

{

hh nu=new hh();

nu.go();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有