- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已经实现了一些带有小型图形用户界面的应用程序。没什么复杂的,但我遇到了几个问题,即组件未显示或行为不符合预期。
现在我的问题:
您如何规划这些用户界面?当你需要做出改变时,你会怎么做?你如何调试奇怪的行为?!
这适用于几乎所有类型的 gui 设计。当然,使用 Microsoft 的 Visual Studio,您有很大的优势,因为您几乎可以得到您在设计器中看到的内容。
是否存在优秀的 AWT 的开源(或免费软件)设计器?已经环顾四周,没有发现任何真正聪明的东西。
编辑:到目前为止,我还手动创建了所有的 GUI。当然它是更干净的代码,但有时很难找到布局错误。如果 MS 的 Visual Studio 能够创建大致干净的代码,为什么其他人不能?
我听说过一些 Eclipse Visual Designer。那个已经准备好生产了吗?
最佳答案
我不是 GUI 构建器的忠实拥护者:它们通常会自动生成大量代码,然后将整个开发团队锁定为使用一个 IDE。另外,这段代码通常不可读(查看 Netbeans 下使用 Matisse 时生成的代码)。
我对 GUI 设计/调试的建议是:
main
方法,使其他开发人员可以轻松确定组件的外观。Action
s 而不是 ActionListener
s 并将这些操作注册到每个 JComponent
的 ActionMap
.这允许它们被“提取”并添加到 UI 的其他部分(例如 JToolBar
),同时它们的状态仍然由“拥有”JComponent
控制(即松散耦合)。断言 SwingUtilities.isEventDispatchThread()
.TaskManager
类。任何后台处理(在 SwingWorker
s 中执行)都会被传递给由 TaskManager
创建的 Task
的句柄。与任务交互(通过调用 setDescription(String)
、setThrowable(Throwable)
、cancel()
)会导致状态栏被更新。它还导致为“全局”任务显示玻璃 Pane ......但这一切都与单个 SwingWorker 分离/隐藏。Observer
/Observable
类,而是使用 ChangeListener
、PropertyChangeListener
或您自己的自定义用于传播事件的监听器实现。 Observer
传递一个 Object
作为它的事件,强制客户端代码使用 instanceof 检查类型并执行向下转换,使代码不可读并且使类之间的关系不太清晰。JTable
而不是 JList
,即使在表只有一列的情况下也是如此。 JList
在其 API 中有一些令人讨厌的特性,包括您需要为其提供原型(prototype)值才能正确计算其大小。DefaultTableModel
,因为它通常会导致您将“模型”数据存储在两个地方:在您的实际业务对象中以及在 DefaultTableModel
所在的二维数组中上。相反,只需将 AbstractTableModel
子类化 - 这非常容易这样做,这意味着您的实现可以简单地委托(delegate)给数据结构(例如 List
)存储您的数据。关于Java AWT/SWT/Swing : How to plan a GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1742001/
AWT-EventQueue 线程和 AWT-Shutdown 线程没有在我们的应用程序中关闭。有没有一种调试技术可以找出它们不存在的原因?有什么特别的东西要寻找吗? 最佳答案 如果你的意思是关闭所有
java.awt.* 和 java.awt.event.* 有什么区别? 最佳答案 这只是两个不同的包。 当您说import java.awt.*时,它仅导入那些完全属于java.awt包的类,而不是
我正在将 aadhar 集成到 liferay 中。我尝试了这个链接 https://developer.uidai.gov.in/site/book/export/html/18 所以我想将其集成到
我想知道如何确定 Java.awt.Rectangle 是否包含特定 Java.awt.Color 的像素。我一直在到处寻找,但找不到任何关于此的信息,甚至找不到任何可能的信息。 所以我想知道如何确定
我试图在组件和图像之间切换面板的内容,它适用于组件: imgpanel.removeAll(); Component comp; if ((comp = player.getVisualCompone
我在使用 JAVA 编码时遇到一些错误,我一直在尝试解决这个问题,也试图找到其他有同样问题的人并修复它,但没有任何效果... 嗯..这是代码 package ca.vanzeben.game;
我想我可以尝试一下 JAXB 来处理存储和恢复设置。但即使是“最简单”的例子我也遇到了麻烦: import java.awt.Point; public class Config { public
这个问题已经有答案了: Import package.* vs import package.SpecificType [duplicate] (10 个回答) 已关闭 7 年前。 在我现在正在进行的
private static byte[] get_byte_data(BufferedImage image) { //WritableRaster raster = image.get
是否有可能获得标准 AWT Cursor以位图图像的形式(例如 BufferedImage )或任何可在 Graphics2D 上绘制的图像?例如,文本光标 new Cursor(Cursor.TEX
我的代码中有三个点,我想填充它们之间的区域,或者换句话说,在 3 个点之间绘制并填充一个三角形。 我想过简单地用 for 循环绘制线条(从 x1 到 x2),但我认为这不会有效,是否有其他更有效的方法
我正在制作一个小脚本,我使用鼠标键来节省我的工作时间。我可以正确、良好地使用鼠标键。但是,当使用 java.awt.Robot 和 java.awt.event.KeyEvent 时,鼠标键基本上被忽
我正在尝试在 scala 中使用 java awt 来制作一个简单的桌面应用程序。我已经在它上面工作了几天,没有任何问题,直到我有 2 天没有碰它,当我回来时,我得到一个 java.lang.NoCl
我在 VisualVM 和线程 View 中监视一个 JavaFX 程序,不断有 AWT-EventQueue-0 和 AWT-Shutdown 线程被创建和销毁。这是正常行为吗?这是什么原因? 最佳
我需要将 java.awt.geom.Area 或 java.awt.Shape 转换为 java.awt.Polygon。我所知道的是:isSingular = true、isPolygonal =
我正在重新使用 Java 并审查我的一些旧代码,并且我看到了很多我已经完成的地方 import javax.swing.*; import java.awt.*; 或者实际上从 swing/awt 包
晚上, 我在玩一个小的 swing 应用程序,我添加了一个按钮来响应按下。因此我需要实现 ActionListener。我已经添加了这一行: import java.awt.*; 但它告诉我找不到“A
我有这个 java 代码: Editor() { javax.swing.SwingUtilities.invokeLater(new Runnable() { pub
请帮我解决这个问题 sun.awt.image.ToolkitImage 无法转换为 java.awt.image.BufferedImage if (shape.hasImage())
嗨 Stackoverflow 的 friend 们 我最近将 Jenkins 服务器配置到 Apache Tomcat 7.0.42我制作的程序是将 jenkins.war 文件部署到 tomcat
我是一名优秀的程序员,十分优秀!