java - 在 Java Swing 中,如何管理允许选择多个面板的面板列表?

标签 java swing jpanel jlist

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

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

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

最佳答案

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

您可以将您的项目添加到 JList首先将您的“任务”添加到 JList对象的 ListModel (请参阅 The Java Tutorials 中的 Create a Model 部分),然后您需要分配一个自定义的 ListCellRenderer 它将接受您的“任务”并在 JList 上呈现作为JPanel在列表本身中。这里的关键是使您的自定义 ListCellRenderer能够在 JList 中显示您的“任务”您希望它在 JList 上显示的方式.

查看 Writing a Custom Cell Renderer来自 How to Use Lists 的部分Java 教程的页面。它将描述如何使您的自定义 ListCellRenderer因此您可以将您的“任务”表示为您想要的任何内容。

为简短起见,您将实现 ListCellRenderer 通过实现 getListCellRendererComponent 接口(interface)这将返回 Component 这是您的任务在 JList 中的表示.您可能想要构建或实例化您的 JPanel在此方法中并将其作为 Component 返回.

关于java - 在 Java Swing 中,如何管理允许选择多个面板的面板列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378161/

相关文章:

java - CardLayout 中有 2 个以上可见的 JPanel

java - 在 JFrame 中淡入和淡出 Jpanels

Java:JOptionPane 输入

java - 手动编码 Swing 组件

java - Apache PDFBox - 无法减小 PDF 内容的大小

java - 休息删除错误请求

java - 为什么 ActionListener 不起作用?

java - 在 JPanel 重绘上更改位置 JLabel

java - BouncyCasSTLe ECDSA 签名需要几毫秒

java - 如何为下面的类编写junit测试用例