【问题标题】:It is correct to group JComponent related classes in same package?将 JComponent 相关类分组在同一个包中是否正确?
【发布时间】:2012-09-08 11:27:55
【问题描述】:

我有一个主包“UI”,其中有我的 Swing 应用程序的所有类。

在这个包中,我扩展了 JTree、JTable 和更多的组件,并为它们制作了一些自定义渲染器、自定义模型。

可以将几个与 JComponent 相关的类分组到自己的包中吗?

例如:

  • package ui.CustomTable
    • CustomJTable
    • CustomJTableModel
    • JTableColumnRenderer
  • package ui.MYJList
    • MYJList
    • MyJListModel
    • MyJListCellRenderer

我是软件工程的新手,这是我的第一份工作,我之所以问你是因为我“害怕”违反任何 OOP 代码约定。

【问题讨论】:

  • 您扩展了JTableJTree,这可能比您对包结构所做的任何“错误”更“错误”,因为通常不需要扩展这些组件。重组你的包是任何体面的 IDE 都可以在几秒钟内完成的事情,所以之后可以很容易地修复
  • 感谢您的建议,我重写了 public String convertValueToText(Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) 以从我的对象中显示文本,但我猜我的树模型不正确
  • 另外,我不得不扩展JTable,因为我为背景(条纹)做了一个自定义绘制

标签: java swing package


【解决方案1】:

可以将与一个 JComponent 相关的几个类分组到自己的包中吗?

当然。事实上,在适当的包中包含 Swing 类是非常有利的,尤其是在使用 Java Web Start 部署时。

JWS 可以为每个 Jar 组织下载、更新和安全级别,因此如果每个包都在一个 Jar 中,则意味着每个包仅在需要时才被下载和缓存、更新或检查有效的数字签名/安全级别

另请注意,当管理层决定应用程序时,渲染器(或 PLAF)可能比其他组件更频繁地更改。需要“与众不同、更现代(比 4 个月前)的外观”。

【讨论】:

  • 另见默认的package-private 访问修饰符。
  • @trashgod package-private - 我今天的学习项目。经常使用它,只是将这个词与它相关联。
【解决方案2】:

作为一般指南,您可以查看要子类化的标准组件的包结构并将其映射到您自己的结构。你可以像这样使用类:

ui.CustomTable
ui.CustomList
ui.CustomListModel
ui.table.CustomTableColumnRenderer

类名最好有一致的命名约定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多