浅析Swing项目的开发

开发 后端
本文介绍对于Swing项目来说,没有一个好的命名规范,特别是在多人参加开发,那将是很槽糕的,Swing中有大量的组件用起来也很麻烦。

关于Swing项目开发浅论

由于工作最近接手一个Swing项目,开发周期为一年,也算是不大不小的项目,而且项目由我来负责,(*^__^*) 嘻嘻……,我将我开发与管理的心得写下,欢迎各位高手和前辈批评指正。
项目开发前的准备:

a:首先对工具的现在,eclispe,netbeans,jb等,对于eclipse我们需要装一个插件swt-designer ,netbeans可以直接开发,sun公司为我们做好了,需要说的是eclipse不支持动态布局,但是将netbeans下的项目import到 eclipse下是可以运行的。

b:对于Swing项目来说,没有一个好的命名规范,特别是在多人参加开发,那将是很槽糕的,Swing中有大量的组件用起来也很麻烦,这里我写一个简单例子,比如,JTextField txtFieldName, JTextArea txtBlog,等,这样可以便于开发和交流。

c:对于工具的确定,netbeans做界面的开发比较好的选择但是对于后台的开发就显弱势了。在这里我选择eclipse作后台开发,***将开发好的程序打jar文件***再导入netbeans中。

项目开发的相关设计

对于Swing做界面来说,并不是我们想象的那么容易,比如说我们在netbeans中画好了所有的界面,在你打开界面的源文件时你会发现这个文件很庞大,可能有上万行代码或者更多,当你读这个代码时也许会感觉茫然的哦。甚至有砸电脑的想法,当维护的人员看到这样的代码,我们是可以想象当时的情景,还有,在Swing中也有很多复杂的事件,对我们开发人员的本身也是一种挑战,我们必须在上万行代码中翻来找去,有没有什么好的办法来解决了。其实是有的。

我们开发其实是面对组件开发,然后将各个组件综合在一起就成了我们所需要的软件,当我们开发中肯定会遇到这样或者那样的
JPane ,JFrom JTable等,我们可以将一个个的jpane,jfrom jtable 重新组合中我们自己的组件以便复用,***我们再这些组件综合在主要的Pane中下面的例子是我用netbeans开发的:

  1. package singlepane;  
  2.  
  3. import org.jdesktop.application.Action;  
  4. import org.jdesktop.application.ResourceMap;  
  5. import org.jdesktop.application.SingleFrameApplication;  
  6. import org.jdesktop.application.FrameView;  
  7. import org.jdesktop.application.TaskMonitor;  
  8. import java.awt.event.ActionEvent;  
  9. import java.awt.event.ActionListener;  
  10. import javax.swing.Timer;  
  11. import javax.swing.Icon;  
  12. import javax.swing.JDialog;  
  13. import javax.swing.JFrame;  
  14. import org.flybird.plat.SingleJpane;  
  15.  
  16. /**  
  17. * The application's main frame.  
  18. */  
  19. public class SinglePaneView extends FrameView  
  20. {  
  21.  
  22. public SinglePaneView(SingleFrameApplication app) {  
  23. super(app);  
  24.  
  25. initComponents();  
  26. }  
  27.  
  28. /** This method is called from within the constructor to  
  29.  * initialize the form.  
  30.  * WARNING: Do NOT modify this code. The content of this method is  
  31.  * always regenerated by the Form Editor.  
  32.  */  
  33. // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
  34. private void initComponents() {  
  35.  
  36. mainPanel = new javax.swing.JPanel();  
  37. mainPabbedPane = new javax.swing.JTabbedPane();  
  38. this.singleJpane = new SingleJpane();  
  39. savePanel = new javax.swing.JPanel();  
  40.  
  41. mainPanel.setName("mainPanel"); // NOI18N  
  42.  
  43. mainPabbedPane.setName("mainPabbedPane"); // NOI18N  
  44.  
  45. savePanel.setName("savePanel"); // NOI18N  
  46.  
  47. org.jdesktop.layout.GroupLayout savePanelLayout = new org.jdesktop.layout.GroupLayout(savePanel);  
  48. savePanel.setLayout(savePanelLayout);  
  49. savePanelLayout.setHorizontalGroup(  
  50. savePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
  51. .add(0, 371, Short.MAX_VALUE)  
  52. );  
  53. savePanelLayout.setVerticalGroup(  
  54. savePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
  55. .add(0, 273, Short.MAX_VALUE)  
  56. );  
  57.  
  58. org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(singlepane.SinglePaneApp.class).getContext().getResourceMap(SinglePaneView.class);  
  59. mainPabbedPane.addTab(resourceMap.getString("savePanel.TabConstraints.tabTitle"), savePanel); // NOI18N  
  60. mainPabbedPane.addTab("single", this.singleJpane);  
  61.  
  62. org.jdesktop.layout.GroupLayout mainPanelLayout = new org.jdesktop.layout.GroupLayout(mainPanel);  
  63. mainPanel.setLayout(mainPanelLayout);  
  64. mainPanelLayout.setHorizontalGroup(  
  65. mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
  66. .add(mainPanelLayout.createSequentialGroup()  
  67. .add(mainPabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)  
  68. .add(24, 24, 24))  
  69. );  
  70. mainPanelLayout.setVerticalGroup(  
  71. mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
  72. .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup()  
  73. .add(20, 20, 20)  
  74. .add(mainPabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE))  
  75. );  
  76.  
  77. setComponent(mainPanel);  
  78. }// </editor-fold> 
  79.  
  80. // Variables declaration - do not modify   
  81. private javax.swing.JTabbedPane mainPabbedPane;  
  82. private javax.swing.JPanel mainPanel;  
  83. private javax.swing.JPanel savePanel;  
  84. // End of variables declaration   
  85. private SingleJpane singleJpane;  
  86.  
  87. }  

【编辑推荐】

  1. 浅析Swing线程包括内容
  2. AWT或Swing混合环境中的事务处理
  3. Swing性能和Swing程序的学习
  4. 比较Swing和SWT的速度
  5. 浅谈Swing构造JList
责任编辑:佚名 来源: 机械工业出版社
相关推荐

2011-07-26 10:44:32

开发项目

2009-07-10 10:37:50

Swing Set示例

2009-06-26 17:48:38

JSF项目单元测试JSFUnit

2009-07-17 11:30:44

Swing Image

2009-07-10 14:20:01

AcceleratorJava Swing

2009-07-15 13:46:26

Swing体系结构

2009-07-15 11:02:32

Swing组件

2009-07-15 16:03:26

Swing线程

2009-07-17 16:41:48

actionPerfoSwing

2009-07-16 17:01:09

Swing字符串

2009-07-14 14:00:47

iData技术

2009-07-15 10:06:54

Swing实现MDI

2009-07-16 09:54:44

LookupEventSwing线程

2009-07-15 17:33:08

Swing客户端

2009-07-10 17:24:07

Swing应用程序

2012-01-17 17:21:24

JavaSwing

2015-12-08 09:13:05

开发维护Java项目

2009-07-14 15:12:36

SwingSWT和AWT

2014-04-23 13:45:40

iOS项目目录结构开发流程

2011-07-14 09:03:41

软件开发项目
点赞
收藏

51CTO技术栈公众号