资源描述:
《现在就是未来!采用XML方式Swing自动布局的设想》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Swing采用XML的方式自动布局的设想抗争的诗人lnwazg@126.com众所周知,java很强大,其强大性主要体现在成熟的社区组织、各类第三方开源的jar类库。所有的这些第三方的功能包,都极大地拓宽了java的适用范围。自动垃圾回收机制,让编写java应用变得轻松自然。但桌面应用一直是java的软肋。长久以来,swing需要采用拖沓冗余的代码来实现复杂的界面布局、“重口味”的原生swing界面,均让Swing这一领域一直不愠不火。Swing界面刷新机制EDT里面的坑,均吓倒了一大批欲在这个领域做出点什么的新人。个人认为,布局代码“不直观”,是摆在swing开发者尤其是面
2、前的第一道大关。但是这个问题在安卓领域却早已拥有成熟的解决方案:采用xml方式布局。那么,比安卓历史更久的Swing技术为何还没有一个简单易用的xml布局工具?举个例子:为了实现以下的界面,我们要写这么长的布局代码:privatevoidinitViews(){this.editServerIp=newJTextField(16);this.editServerPort=newJTextField(5);this.editServerIp.setForeground(newColor(13,148,252));this.editServerPort.setForeground
3、(newColor(13,148,252));this.editServerIp.setText("rbcore.openmob.net");this.editServerPort.setText("7901");this.btnLogin=newJButton("登陆");this.btnLogin.setUI(newBEButtonUI().setNormalColor(BEButtonUI.NormalColor.blue));this.btnLogin.setForeground(Color.white);this.editLoginName=newJTextFiel
4、d(22);this.editLoginPsw=newJPasswordField(22);this.btnLogout=newJButton("退出");this.viewMyid=newJLabel();this.viewMyid.setForeground(newColor(255,0,255));this.viewMyid.setText("未登陆");this.btnSend=newJButton("发送消息");this.btnSend.setUI(newBEButtonUI().setNormalColor(BEButtonUI.NormalColor.gree
5、n));this.btnSend.setForeground(Color.white);this.editId=newJTextField(20);this.editContent=newJTextField(20);this.debugPane=newJTextPane();this.debugPane.setBackground(Color.black);this.debugPane.setCaretColor(Color.white);Log.getInstance().setLogDest(this.debugPane);this.imInfoPane=newJTex
6、tPane();HardLayoutPaneauthPanel=newHardLayoutPane();JPanelserverInfoPane=newJPanel(newBorderLayout());JPanelportInfoPane=newJPanel(newBorderLayout());portInfoPane.add(newJLabel(":"),"West");portInfoPane.add(this.editServerPort,"Center");serverInfoPane.add(this.editServerIp,"Center");serverI
7、nfoPane.add(portInfoPane,"East");authPanel.addTo(serverInfoPane,2,true);authPanel.nextLine();authPanel.addTo(newJLabel("用户名:"),1,true);authPanel.addTo(this.editLoginName,1,true);authPanel.nextLine();authPanel.addTo(newJLabel("密码:"),1,true);authPanel.addT