【问题标题】:What Swing component(s) should I use to display a list of songs and song attributes?我应该使用什么 Swing 组件来显示歌曲列表和歌曲属性?
【发布时间】:2014-05-25 02:44:57
【问题描述】:

我正在编写一个可以播放本地 mp3 文件的音乐播放器。我正在尝试显示供用户选择和播放的歌曲列表,但我无法确定要使用哪些 Swing 组件。

我想做什么

  • 在列表中显示歌曲
  • 在每个水平行中,都会显示一个歌曲条目
  • 在每一列中,显示每个歌曲条目的属性(曲目名称、长度、专辑、艺术家)
  • 每列上方是显示该属性的列标题
  • 当用户点击歌曲条目时,它会突出显示
  • 点击标题,按每列(曲目名称、长度、专辑、艺术家)对条目进行排序
  • 可调整列宽
  • 双击一个条目来播放它
  • 最终,艺术家和专辑标签应该能够像超链接一样发挥作用

我考虑过的选项

JTable:不能突出显示整行,单元格是可编辑的

JList:列表为 1 个“元素”宽,因此列及其标题很难设置,不确定是否将 Swing 组件放入列表元素中

大量 JPanel:将大量 JPanel 放在一起来实现我自己的显示将非常困难且非常混乱

我对我没有想到的其他选择和我有的任何误解持开放态度。

【问题讨论】:

    标签: java swing jtable jpanel jlist


    【解决方案1】:

    回复。 JTable

    无法突出显示整行,..

    致电JTable.setRowSelectionAllowed(boolean)

    ..单元格是可编辑的

    覆盖TableModel.isCellEditable(row,col)

    【讨论】:

    • 我会调查的。感谢您消除我的误解。
    【解决方案2】:

    您应该使用 JTable。 JTable 可以突出显示整行,单元格是否可编辑由您选择。

    你应该传入你自己的TableModelTableColumnModel

    如果您在编写具有行选择且没有可编辑单元格的 JTable 时遇到问题,您可以使用您拥有的代码发布一个新问题。

    【讨论】:

    • JTable会根据TableModel创建TableColumnModel。
    • 是的 - 如果您实现自己的 TableModel(我一直这样做),您还必须传递 TableColumn 定义。
    • @ErwinBolwidt 不,你没有“必须”(提供你自己的ColumnModel),TableModel 定义了getColumnCountgetColumnClassgetColumnNameJTable 用于自动从生成列模型
    【解决方案3】:

    如果您想采用付费方式,可以使用JIDE Grid 之类的方式。如果您想要免费,那么要么坚持使用已配置的 JTable(如前所述),要么查看为您提供更好 UI 组件的库,例如 Insubstantial

    这里有一堆 examples 介绍如何在表格中对某些内容进行编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 2015-11-15
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多