我已经实现了一些带有小型图形用户界面的应用程序。没什么复杂的,但是我遇到了一些问题,这些问题导致组件无法显示或无法正常运行。
现在我的问题是:
您如何计划这些用户界面?当您需要进行更改时该怎么办?您如何调试奇怪的行为?
这几乎适用于所有类型的GUI设计。当然,使用Microsoft Visual Studio具有很大的优势,因为您几乎获得了在设计器中看到的东西。
是否存在优秀的AWT开源设计器?已经环顾四周,没有发现任何真正聪明的东西。
编辑:到目前为止,我还手动创建了所有GUI。当然,这是更简洁的代码,但有时很难找到布局错误。如果Visual Studio by MS能够创建大致干净的代码,那么其他人为什么不呢?
我听说过一些Eclipse Visual设计器。那个已经准备好生产了吗?
我不是GUI建设者的忠实拥护者:他们通常会自动生成大量的代码,然后将您的整个开发团队锁定为使用一个IDE。而且,此代码通常不可读(请检查在Netbeans下使用Matisse时生成的代码)。
我对GUI设计/调试的建议是:
main
在每个面板(或“顶级”组件)实现中添加一个方法,使其他开发人员可以轻松确定组件的外观。Action
s over ActionListener
s并在每个JComponent
s中注册这些动作ActionMap
。这允许它们被“提取”并添加到UI的其他部分(例如JToolBar
),同时它们的状态仍由“所有权” JComponent
(即松散耦合)控制。assert SwingUtilities.isEventDispatchThread()
。TaskManager
在UI的状态栏中注册的类。任何后台处理(在SwingWorker
s 内执行)都会通过传递给Task
创建的句柄TaskManager
。与工作Interracting(通过调用setDescription(String)
,setThrowable(Throwable)
,cancel()
)导致要更新的状态栏。这也将导致玻璃窗格显示为“全局”任务...但是,所有窗格都与单个SwingWorkers分离/隐藏了。Observer
/ Observable
班,而是青睐ChangeListener
,PropertyChangeListener
或传播事件自己定制的监听器实现。Observer
传递一个Object
as事件,迫使客户端代码使用instanceof检查类型并执行向下转换,使代码不可读,并使类之间的关系不那么清楚。JTable
over JList
。JList
它的API中有一些讨厌的功能,包括您需要为其提供原型值以正确计算其大小这一事实。DefaultTableModel
它,因为它通常会导致您将“模型”数据存储在两个位置:在实际的业务对象中以及位于2D数组中DefaultTableModel
。相反,只需子类AbstractTableModel
-这很容易做到,并且意味着您的实现可以简单地委派给List
存储您的数据的数据结构(例如)。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句