JFreeChart使JFrame没有响应



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

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的情况下,有什么方法可以解决这个问题吗?

请确保创建一个ChartPanel,并将JFreeChartadd()添加到JFrame。默认位置是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);
}

此外,请确保在事件调度线程上启动。

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            new YourClass().display();
        }
    });
}

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

最新更新