【问题标题】:How to draw "Gantt Chart" on JPanel?如何在 JPanel 上绘制“甘特图”?
【发布时间】:2015-05-09 11:22:24
【问题描述】:

我正在尝试实现 CPU 调度算法...我正在使用 java swing(不是运行时设计)

这是我的主要表单的外观: 我通过从摇摆容器/控件/菜单中拖动组件并将它们放在JFrame 上来设计它。

我在 FCFS 选项卡的主面板上有一个 JPanel。我想在该面板上绘制一个“甘特图”(如图所示)。我已经阅读了很多教程并实现了许多关于绘制线条的示例,但我不知道如何在我的代码中使用 @Override painComponent() 方法,因为所有变量和方法都是自动生成的(我使用的是 NetBeans IDE),并且我无法找到我的JPanel(我想在上面画线)。

我想画一张像这样的“甘特图”。当用户为多个进程输入 CPU 突发并按下“计算”按钮时,它将自动生成。如果用户为每个进程输入“10 ms”突发,则将生成当前图表。

在这张图片中,我试图解释组件的顺序,我已经添加到我的 JFrame 中,以及它们的变量名。

我正在寻找过去 15 天的解决方案……但我陷入了这个问题……请帮我解决这个问题。

请帮帮我...

【问题讨论】:

  • @user1803551 ...保存在哪里?
  • 没关系,我嵌入了它们。
  • @user1803551 ...我刚刚获得了足够的声誉来发布图片(-:

标签: java swing netbeans charts paintcomponent


【解决方案1】:

关键是首先了解 Swing 如何使用 MVC 模式,检查了here。就像 JTable 监听其 TableModel 一样,JFreeChart 甘特图监听其自己的 CategoryDataset,如图所示 herehere

在您的TableModel 中覆盖setValueAt() 并相应地更新您的CategoryDatasetJTable 和甘特图都将更新自己作为响应。如果需要,您可以更改GanttRenderer,如图所示here

虽然debatable,我主张在开发的这个阶段手工编码而不是GUI builder?如果您使用构建器,请按照here 所述限制范围。

【讨论】:

  • 非常感谢您的帮助...实际上我的问题是我必须使用 JFrame 的 paint() 方法绘制甘特图 .. 或其他组件的 paintComponent() 方法...
  • 我还没有研究过 MVC .. 之前从未使用过 JFreeChart ......所以我不知道它们.. 但我真的需要帮助......请帮我找到解决方案
  • 如您在第一张图片中看到的......我创建了两个表......我所做的是:我使用 Netbeans GUI 在 JPanel 上创建它们......然后在我的 JTextField 和计算按钮我使用DefaultTableModel 来填充这些表格......我想对甘特图做同样的事情......我有一个 JPanel,我想在上面绘制我的图表......图表将在用户生成按下计算按钮..所以我必须在计算按钮的 actionPerformed 中编写我的代码......但我不知道在那里写什么..我不明白如何覆盖 paintComponent() 方法并使用它那里
  • 我已经尝试过创建一个内部类,它使用 JPanel .. 但我不明白如何使用它的对象来绘制我指定的 JPanel .. 请帮助我
  • 在这种情况下我会选择 MVC。如果你不使用jfreechart,你可以让你的TableModel 直接更新你的甘特视图组件。 “Swing 程序应该覆盖 paintComponent() 而不是覆盖 paint()。”—Painting in AWT and Swing: The Paint Methods。为避免过于宽泛,请编辑您的问题以包含complete example,重点关注您在修改后的方法中遇到的任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多