JFreeChart 使 JFrame 无响应?

JFreeChart making JFrame unresponsive?

当我创建 JFrame 时,无法与其交互。我无法调整它的大小或单击标题按钮,尽管我可以移动 window。甚至像这样简单的东西:

JFrame win = new JFrame();
win.setVisible(true);

会出现问题。应用程序启动时在控制台中显示:

2015-03-17 10:06:47.261 java[1406:507] [Java CocoaComponent compatibility mode]: Enabled
2015-03-17 10:06:47.261 java[1406:507] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000

显然,当混合 Swing 和 SWT 组件时会发生这种情况。我不使用 SWT 库,尽管我的项目确实使用了包含 swtgraphics2d.jar 的 JFreeChart。有什么方法可以在仍然使用 JFreeChart 的情况下解决这个问题吗?

一定要用你的 JFreeChartadd() 创建一个 ChartPanelJFrame。默认位置是 BorderLayout.CENTER,这应该让您的图表随框架调整大小。

private void display() {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    YourDataset data = createYourDataset(…);
    JFreeChart chart = createYourChart(…);
    f.add(new ChartPanel(chart);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setVisible(true);
}

此外,请务必从 event dispatch thread 开始。

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            new YourClass().display();
        }
    });
}

当我删除(现在已知的)不必要的罐子时,问题就消失了,包括 swtgraphics2d.jar