- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
现在就是未来!采用XML方式Swing自动布局的设想
Swing 采用XML的方式自动布局的设想抗争的诗人lnwazg@126.com众所周知,java很强大,其强大性主要体现在成熟的社区组织、各类第三方开源的jar类库。所有的这些第三方的功能包,都极大地拓宽了java的适用范围。自动垃圾回收机制,让编写java应用变得轻松自然。但桌面应用一直是java的软肋。长久以来,swing需要采用拖沓冗余的代码来实现复杂的界面布局、“重口味”的原生swing界面,均让Swing这一领域一直不愠不火。Swing界面刷新机制EDT里面的坑,均吓倒了一大批欲在这个领域做出点什么的新人。个人认为,布局代码“不直观”,是摆在swing开发者尤其是面前的第一道大关。但是这个问题在安卓领域却早已拥有成熟的解决方案:采用xml方式布局。那么,比安卓历史更久的Swing技术为何还没有一个简单易用的xml布局工具?举个例子:为了实现以下的界面,我们要写这么长的布局代码:private void initViews() {this.editServerIp = new JTextField(16);this.editServerPort = new JTextField(5);this.editServerIp.setForeground(new Color(13, 148, 252));this.editServerPort.setForeground(new Color(13, 148, 252));this.editServerIp.setText();this.editServerPort.setText(7901);this.btnLogin = new JButton(登陆);this.btnLogin.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.blue));this.btnLogin.setForeground(Color.white);this.editLoginName = new JTextField(22);this.editLoginPsw = new JPasswordField(22);this.btnLogout = new JButton(退出);this.viewMyid = new JLabel();this.viewMyid.setForeground(new Color(255, 0, 255));this.viewMyid.setText(未登陆);this.btnSend = new JButton(发送消息);this.btnSend.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.green));this.btnSend.setForeground(Color.white);this.editId = new JTextField(20);this.editContent = new JTextField(20);this.debugPane = new JTextPane();this.debugPane.setBackground(Color.black);this.debugPane.setCaretColor(Color.white);Log.getInstance().setLogDest(this.debugPane);this.imInfoPane = new JTextPane();HardLayoutPaneauthPanel = new HardLayoutPane();JPanelserverInfoPane = new JPanel(new BorderLayout());JPanelportInfoPane = new JPanel(new BorderLayout());portInfoPane.add(new JLabel(:), West);portInfoPane.add(this.editServerPort, Center);serverInfoPane.add(this.editServerIp, Center);serverInfoPane.add(portInfoPane, East);authPanel.addTo(serverInfoPane, 2, true);authPanel.nextLine();authPanel.addTo(new JLabel(用户名:), 1, true);authPanel.addTo(this.editLoginName, 1, true);authPanel.nextLine();authPanel.addTo(new JL
文档评论(0)