<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/6267c5104c65f41259759fee/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6267c5104c65f41259759fee/bg1.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">第<span class="ff2">8</span>章</div><div class="t m0 x1 h3 y3 ff1 fs1 fc0 sc0 ls0 ws0">图形用户界面</div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6267c5104c65f41259759fee/bg2.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x2 h4 y4 ff1 fs2 fc0 sc0 ls1 ws0">本章主要内容</div><div class="t m0 x3 h5 y5 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _0"> </span><span class="ff2 fs4 fc1 ls2">1.<span class="ls0">sw<span class="_ _1"></span>ing<span class="ff1">与</span>awt<span class="ff1">组件</span></span></span></div><div class="t m0 x3 h5 y6 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _0"> </span><span class="ff2 fs4 fc1">2.sw<span class="_ _1"></span>i<span class="_ _2"></span>ng<span class="ff1">类的层次结构</span></span></div><div class="t m0 x3 h6 y7 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _0"> </span><span class="ff2 fs5 fc1 ls3">3.<span class="ff1 ls1">容器</span></span></div><div class="t m0 x3 h5 y8 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _0"> </span><span class="ff2 fs4 fc1 ls2">4.<span class="ff1 ls0">组件</span></span></div><div class="t m0 x3 h6 y9 ff3 fs6 fc0 sc0 ls0 ws0"><span class="_ _0"> </span><span class="ff2 fs5 fc1 ls3">5.<span class="_ _1"></span><span class="ff1 ls1">组件布局管理</span></span></div><div class="t m0 x3 h5 ya ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _0"> </span><span class="ff2 fs4 fc1 ls2">6.<span class="ff1 ls0">事件处理方机制</span></span></div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6267c5104c65f41259759fee/bg3.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x4 h7 yb ff4 fs7 fc2 sc0 ls0 ws0">3</div><div class="t m0 x5 h2 yc ff5 fs0 fc0 sc0 ls0 ws0">8.1 swing<span class="ff1 sc1">与</span>awt<span class="ff1 sc1 ls4">组件</span></div><div class="t m0 x6 h8 yd ff3 fs8 fc0 sc0 ls0 ws0"><span class="_ _3"> </span><span class="ff2 fs9 fc3">Java<span class="ff1">语言</span>1<span class="_ _1"></span>.0<span class="ff1">提供的</span>GUI<span class="_ _2"></span><span class="ff1">(图形用户界面)编程类库只有抽象窗口工</span></span></div><div class="t m0 x7 h8 ye ff1 fs9 fc3 sc0 ls5 ws0">具箱(<span class="ff2 ls0">awt<span class="_ _1"></span><span class="ff1">:<span class="ff2">Abst<span class="_ _1"></span>ract<span class="_ _1"></span> <span class="_ _4"></span>W<span class="_ _1"></span>indow <span class="_ _2"></span>Too<span class="_ _1"></span>l<span class="_ _2"></span>kit<span class="ff1">)。</span></span></span></span></div><div class="t m0 x8 h9 yf ff3 fsa fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff1 fsb fc3">使用<span class="ff2">awt<span class="_ _1"></span><span class="ff1 ls5">库在处理用户界面组件时,把组件的创建和行为都<span class="_ _1"></span><span class="ls0">委托给本地计</span></span></span></span></div><div class="t m0 x9 ha y10 ff1 fsc fc3 sc0 ls1 ws0">算机的<span class="ff2 ls0">GU<span class="_ _1"></span>I<span class="_ _2"></span><span class="ff1 ls1">工具处理<span class="ls0">,使用</span></span>awt<span class="_ _1"></span><span class="ff1 ls1">库在处理复杂图形时,在不同平台会有差</span></span></div><div class="t m0 x9 h9 y11 ff1 fsb fc3 sc0 ls0 ws0">别。</div><div class="t m0 x8 ha y12 ff3 fsd fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff1 fsc fc3 ls1">为了实现<span class="ff2 ls0">Java<span class="_ _1"></span><span class="ff1 ls1">语言所宣称的<span class="ff2 ls0">"</span>一次编译,到处运行<span class="ff2 ls0">"</span>的概念,<span class="_ _2"></span><span class="ff2 ls0">aw<span class="_ _1"></span>t<span class="_ _1"></span><span class="ff1 ls1">不得不通</span></span></span></span></span></div><div class="t m0 x9 h9 y13 ff1 fsb fc3 sc0 ls0 ws0">过牺牲功能来实现平台无关性。因此,<span class="ff2">awt<span class="_"> </span></span><span class="ls5">的图形功能是各操作系统图</span></div><div class="t m0 x9 h9 y14 ff1 fsb fc3 sc0 ls0 ws0">形功能的“交集”。</div><div class="t m0 x6 h8 y15 ff3 fs8 fc0 sc0 ls0 ws0"><span class="_ _3"> </span><span class="ff2 fs9 fc3">swing<span class="ff1">不仅提供了</span>aw<span class="_ _2"></span>t<span class="_ _6"> </span><span class="ff1">的所有功能,还用纯粹的</span>Java<span class="ff1">代码对</span>awt<span class="_ _1"></span><span class="ff1">的</span></span></div><div class="t m0 x7 h8 y16 ff1 fs9 fc3 sc0 ls5 ws0">功能进行了大幅度的扩充。</div><div class="t m0 x8 h9 y17 ff3 fsa fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff1 fsb fc3">例如:并不是所有的操作系统都提供了对树形控件的支持,<span class="_ _6"> </span><span class="ff2">sw<span class="_ _1"></span>ing<span class="ff1 ls5">则利用</span></span></span></div><div class="t m0 x9 h9 y18 ff1 fsb fc3 sc0 ls0 ws0">了<span class="ff2">aw<span class="_ _1"></span>t<span class="ff1">中所提供的基本作图方法模拟了一个树形控件。</span></span></div><div class="t m0 x8 ha y19 ff3 fsd fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff1 fsc fc3 ls1">由于<span class="_ _7"> </span><span class="ff2 ls0">swing</span>是用纯粹的<span class="ff2 ls0">Ja<span class="_ _1"></span>va<span class="ff1 ls1">代码来实现的,因此</span>swing<span class="ff1">控件在各平台通</span></span></span></div><div class="t m0 x9 h9 y1a ff1 fsb fc3 sc0 ls0 ws0">用。</div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6267c5104c65f41259759fee/bg4.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x4 h7 yb ff4 fs7 fc2 sc0 ls0 ws0">4</div><div class="t m0 x5 hb y1b ff5 fse fc0 sc0 ls0 ws0">swing <span class="ff1 sc1">与<span class="_ _2"></span></span>awt<span class="_"> </span><span class="ff1 sc1 ls6">的使用差别</span></div><div class="t m0 x6 hc y1c ff3 fsf fc0 sc0 ls0 ws0"><span class="_ _8"> </span><span class="ff2 fs10 fc3">swi<span class="_ _2"></span>ng<span class="ff1 ls1">提供了比</span>awt<span class="ff1">更丰富、更平台无关的图形界面,但并不</span></span></div><div class="t m0 x7 hd y1d ff1 fs11 fc3 sc0 ls5 ws0">是对<span class="ff2 ls0">awt<span class="ff1">的完全替代:</span></span></div><div class="t m0 x8 he y1e ff1 fs12 fc0 sc1 ls0 ws0">①<span class="_ _9"> </span><span class="fs13 fc3 sc2 ls4">知识的关联性</span></div><div class="t m0 xa h8 y1f ff1 fs9 fc3 sc0 ls0 ws0">比如<span class="_ _a"> </span>布局<span class="ff2 ls7">, <span class="_"> </span></span>颜色<span class="ff2 ls7">, <span class="_ _2"></span></span><span class="ls5">字体</span><span class="ff2">,</span>事件机制<span class="_ _a"> </span>等<span class="ff2 ls7">....</span><span class="ls5">这些都是</span><span class="ff2">awt<span class="_ _1"></span><span class="ff1">里的内容<span class="ff2 ls7">. <span class="_ _4"></span></span>但</span></span></div><div class="t m0 xa h8 y20 ff1 fs9 fc3 sc0 ls0 ws0">在<span class="ff2">swing</span>里也经常使用到<span class="ff2">.</span></div><div class="t m0 x8 h8 y21 ff1 fs14 fc0 sc1 ls0 ws0">②<span class="_ _9"> </span><span class="fs9 fc3 sc2">使用<span class="_ _2"></span>场<span class="_ _2"></span>景存在不<span class="_ _2"></span>同</span></div><div class="t m0 xa he y22 ff2 fs13 fc3 sc0 ls0 ws0">swing<span class="ff1">跨平台</span>,<span class="ff1 ls1">组件丰富;运行速度比较慢。</span></div><div class="t m0 xa h8 y23 ff2 fs9 fc3 sc0 ls0 ws0">awt<span class="ff1">消耗资源少</span>,<span class="_ _1"></span><span class="ff1 ls5">基于本地方法的<span class="ff2 ls0">C/C++<span class="ff1">程序,运行速度快;适</span></span></span></div><div class="t m0 xa h8 y24 ff1 fs9 fc3 sc0 ls0 ws0">合嵌入式等;</div><div class="t m0 x8 h8 y25 ff1 fs14 fc0 sc0 ls0 ws0">③<span class="_ _9"> </span><span class="ff2 fs9 fc3">swing<span class="ff1 sc2 ls6">编码上区别不大</span></span></div><div class="t m0 xa he y26 ff1 fs13 fc3 sc0 ls1 ws0">写法基本一致<span class="ff2 ls8">, </span>组件使用上也差不多<span class="_ _2"></span><span class="ff2 ls8">,(<span class="_ _1"></span><span class="ff1 ls0">只需要记住少数有区别的</span></span></div><div class="t m0 xa h8 y27 ff1 fs9 fc3 sc0 ls0 ws0">地方就可以了<span class="ff2">)</span></div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6267c5104c65f41259759fee/bg5.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x4 h7 yb ff4 fs7 fc2 sc0 ls0 ws0">5</div><div class="t m0 x6 h9 y28 ff3 fsa fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff1 fsb fc3">在<span class="ff2">j<span class="_ _1"></span>ava<span class="ff1">中,</span>awt<span class="_ _1"></span><span class="ff1">包的名称是<span class="ff2">ja<span class="_ _1"></span>va.awt<span class="ff1">,</span>s<span class="_ _2"></span>wing<span class="ff1 ls5">包的名称是</span>ja<span class="_ _1"></span>vax<span class="_ _2"></span>.swing<span class="ff1">。</span></span></span></span></span></div><div class="t m0 x7 ha y29 ff2 fsc fc3 sc0 ls0 ws0">j<span class="_ _1"></span>ava.<span class="_ _1"></span>awt<span class="_ _1"></span><span class="ff1">和<span class="_ _2"></span><span class="ff2">j<span class="_ _1"></span>avax.swing<span class="ff1">两个包的层次关系如下:</span></span></span></div><div class="t m0 x6 ha y2a ff3 fsd fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff1 fsc fc3 ls1">如图所示,<span class="ff2 ls0">swing</span>组件都是<span class="ff2 ls0">aw<span class="_ _1"></span>t<span class="_ _1"></span><span class="ff1">的<span class="ff2">Cont<span class="_ _1"></span>ainer<span class="ff1 ls1">类的直接子类和间接子类,</span></span></span></span></span></div><div class="t m0 x7 h9 y2b ff2 fsb fc3 sc0 ls0 ws0">Cont<span class="_ _1"></span>ainer<span class="ff1">类是用来管理相关组件的类。</span></div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>