当我创建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
,并将JFreeChart
和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();
}
});
}
当我移除(现在已知)不必要的jar(包括swtgraphics2d.jar
)时,问题就消失了。