3

我正在开发一个跟踪一堆任务的内部应用程序。我想要一个简单的任务监视器,它会列出任务名称和任务的状态。我需要它看起来有点漂亮,我不是设计师,所以无论我做什么都会很糟糕,但是基本的文本显示不适合项目要求。

我实际上试图做的是显示类似于 Firefox 下载窗口、I-Tunes 下载窗口的东西,我可以命名更多,但它们看起来基本相同。在这些应用程序中的每一个中,每个“进度面板”都是可选的。所以为了实现这一点,我认为只使用一个 JPanel 列表很简单,每个 JPanel 都有一个 JProgressBar 和一个 JLabel,每个 JPanel 都可以接受焦点来确定它和其他是否被选中。我认为这将是一项简单的任务,但如果我使用 JList,它只会显示文本。然后我只是想我会在一个更大的面板中显示所有任务面板,但我无法让内部面板识别焦点。

有这种模式吗?有没有我刚刚找到的滚动标准解决方案?或者有没有更好的方法来做到这一点?我不想重新发明轮子,但我认为这很简单。

4

3 回答 3

8

听起来您可能正在寻找的是一个JList.

您可以JList通过首先将您的“任务”添加到JList对象中来添加您的项目ListModel(请参阅 Java 教程中的创建模型部分),然后您需要分配一个自定义ListCellRenderer来接受您的“任务”和在列表本身中呈现JList为 a 。JPanel这里的关键是让您的自定义ListCellRenderer能够以JList您希望在JList.

查看The Java Tutorials的How to Use Lists页面中的Writing a Custom Cell Renderer部分。它将描述如何进行自定义,以便您可以将“任务”表示为您想要的任何内容。ListCellRenderer

为简短起见,您将ListCellRenderer通过实现 which 来实现接口,getListCellRendererComponent这将返回 aComponent这是您的任务在JList. 您可能希望JPanel在此方法中构造或实例化您的并将其作为Component.

于 2008-12-18T15:38:59.387 回答
1

做这类事情的标准方法是使用 JTable(或 JList)作为容器。

您不必为表格单元格使用默认渲染器,但您可以为特定单元格指定自己的渲染器。看看CellRenderer

于 2008-12-18T15:26:16.930 回答
0

怎么样 a JTable(您可以设置为允许选择多行),内部JPanel占用每行中的单个单元格,其中包含 aJProgressBar和 a JLabel。或者您可以使用JList与我刚刚描述的结构相同的 a 。

于 2008-12-18T15:24:54.890 回答