Atm*_*ons 28 java graphics swing
我已经用一个小的图形用户界面实现了一些应用程序.没有什么复杂的,但我遇到了几个问题,组件没有显示或只是没有按预期运行.
现在我的问题:
你如何规划这些用户界面?当你需要做出改变时你会怎么做?你如何调试奇怪的行为?!
这适用于几乎所有类型的gui设计.当然,使用Microsofts Visual Studio,你有一个很大的优势,因为你几乎得到了你在设计师看到的东西.
是否存在针对AWT 的优秀开源(或免费软件)设计器?已经环顾四周,没有找到真正聪明的东西.
编辑:到现在为止,我还手工创建了所有的GUI.当然它是更清晰的代码,但有时很难找到布局错误.如果MS的Visual Studio能够创建大致干净的代码,为什么不是其他代码?
我听说过一些Eclipse Visual设计师.这个已经准备就绪吗?
Ada*_*ski 73
我不是GUI构建器的忠实粉丝:它们通常会自动生成桶装代码,然后锁定整个开发团队使用一个IDE.此外,此代码通常是不可读的(检查在Netbeans下使用Matisse时生成的代码).
我对GUI设计/调试的建议是:
main向每个面板(或"顶级"组件)实现添加方法,允许其他开发人员轻松确定组件的外观.Actions over ActionListeners并将这些操作注册到每个JComponent人的手中ActionMap.这允许它们被"提取"并添加到UI的其他部分(例如JToolBar),同时仍然通过"拥有" JComponent(即松散耦合)控制它们的状态.assert SwingUtilities.isEventDispatchThread().TaskManager在我的UI状态栏中注册的类.任何后台处理(在SwingWorkers中执行)都会传递一个句柄来Task创建一个TaskManager.与工作Interracting(通过调用setDescription(String),setThrowable(Throwable),cancel())导致要更新的状态栏.它还会使玻璃窗格显示为"全局"任务......但这些都与各个SwingWorkers分离/隐藏.Observer/ Observable班,而是青睐ChangeListener,PropertyChangeListener或传播事件自己定制的监听器实现. Observer传递一个Object事件,强制客户端代码使用instanceof检查类型并执行向下转换,使代码不可读并使类之间的关系不那么清晰.JTableover JList. JList它的API中有一些讨厌的功能,包括你需要为它提供一个原型值来正确计算它的大小.DefaultTableModel因为它通常会导致您将"模型"数据存储在两个位置:在您的实际业务对象中以及在所在的2D数组中DefaultTableModel.相反,简单地子类化AbstractTableModel- 这很容易实现,这意味着您的实现可以简单地委托给List存储数据的数据结构(例如).我是那些手工制作GUI布局的古老家伙之一.我也不怕臭名昭着GridBagLayout!
我多年前通过模拟Visual Age使用的编码标准为自己保持简单:我使用了很多JPanel来组织GUI的各个部分,每个人都有自己的makeXXX()方法来创建它,将其放置并将其返回给父级面板或构造函数.这样,每个人makeXXX只需要专注于整个作品的一小部分.
某些组件需要通过各种实例方法访问; 我将这些声明为实例字段.其他东西,只是装饰或布局,不需要暴露在makeXXX方法之外.
这主要是它.适合我.
| 归档时间: |
|
| 查看次数: |
11321 次 |
| 最近记录: |