Java JFreeChart使JFrame无响应?
当我创建JFrame时,我无法与它交互。我无法调整它的大小或单击标题按钮,尽管我可以移动窗口。甚至像这样简单的事情:Java JFreeChart使JFrame无响应?,java,swing,swt,jfreechart,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
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库,尽管我的项目使用JFreeChart,它包含
swtgraphics2d.jar
。在仍然使用JFreeChart的情况下,是否有办法解决此问题?请确保使用JFreeChart
创建一个ChartPanel
,并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);
}
此外,请确保从上开始
当我删除了(现在已知的)不必要的jar时,问题就消失了,包括
swtgraphics2d.jar
显示创建JFrame
的上下文。即使我在一个空的main()中创建JFrame,也会发生这种情况。您使用javax.swing.JFrame
?很高兴它能正常工作,但是您可能想要检查您的类路径;我对java-cp-jfreechart/lib/*:…
没有问题,它包括jfreechart-1.0.19-swt.jar
。
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new YourClass().display();
}
});
}