JFreeChart使JFrame无法响应?

时间:2015-03-17 14:13:44

标签: java swing swt jfreechart

当我创建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组件时可能会发生这种情况。虽然我的项目确实使用了包含swtgraphics2d.jar的JFreeChart,但我没有使用SWT库。有没有办法解决这个问题,同时仍然使用JFreeChart?

2 个答案:

答案 0 :(得分:2)

请务必使用ChartPanelJFreeChart add()创建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();
        }
    });
}

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

{{1}}

答案 1 :(得分:1)

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