在最大化屏幕上调整大小 JFreeChart.ChartPanel
Resize JFreeChart.ChartPanel on maximizing screen
我有一个 JFrame frame
,其中包含一个 JPanel
面板。我还在面板中添加了一个 JFreeChart ChartPanel cp
。到目前为止,我所做的是在框架 frame
上使用 ComponentListener
来对调整 window 的大小做出反应。
这是我的代码片段:
private void initialize() throws ParseException {
frame = new JFrame();
frame.addComponentListener(new ComponentListener() {
@Override
public void componentResized(ComponentEvent e) {
ChartPanel cp = (ChartPanel)panel.getComponents()[0];
cp.setPreferredSize(new java.awt.Dimension(panel.getWidth(), panel.getHeight()));
frame.repaint();
cp.repaint();
}
@Override
public void componentMoved(ComponentEvent e) {}
@Override
public void componentShown(ComponentEvent e) {}
@Override
public void componentHidden(ComponentEvent e) {}
});
...
}
ChartPanel
在更改框架大小时完美调整大小。但是当我最大化我的框架时,图表面板不会改变它的大小!它与最大化之前的时刻保持不变。因此,当我再次 "un-maximize" 我的框架时,图表面板被最大化,这导致了问题,即图表不再适合图表面板。所有这些调整大小的东西似乎都是 "one step behind"...
有没有人知道这种行为并帮助纠正它?
在 ChartPanel.setPreferredSize
和 JFrame.validate
完成工作后调用 ChartPanel.setSize
!查看新代码:
frame = new JFrame();
frame.addComponentListener(new ComponentListener() {
@Override
public void componentResized(ComponentEvent e) {
// frame.repaint();
ChartPanel cp = (ChartPanel)panel.getComponents()[0];
cp.setPreferredSize(new java.awt.Dimension(panel.getWidth(), panel.getHeight()));
cp.setSize(new java.awt.Dimension(panel.getWidth(), panel.getHeight()));
// frame.invalidate();
frame.validate();
// frame.repaint();
}
...
});
...
我有一个 JFrame frame
,其中包含一个 JPanel
面板。我还在面板中添加了一个 JFreeChart ChartPanel cp
。到目前为止,我所做的是在框架 frame
上使用 ComponentListener
来对调整 window 的大小做出反应。
这是我的代码片段:
private void initialize() throws ParseException {
frame = new JFrame();
frame.addComponentListener(new ComponentListener() {
@Override
public void componentResized(ComponentEvent e) {
ChartPanel cp = (ChartPanel)panel.getComponents()[0];
cp.setPreferredSize(new java.awt.Dimension(panel.getWidth(), panel.getHeight()));
frame.repaint();
cp.repaint();
}
@Override
public void componentMoved(ComponentEvent e) {}
@Override
public void componentShown(ComponentEvent e) {}
@Override
public void componentHidden(ComponentEvent e) {}
});
...
}
ChartPanel
在更改框架大小时完美调整大小。但是当我最大化我的框架时,图表面板不会改变它的大小!它与最大化之前的时刻保持不变。因此,当我再次 "un-maximize" 我的框架时,图表面板被最大化,这导致了问题,即图表不再适合图表面板。所有这些调整大小的东西似乎都是 "one step behind"...
有没有人知道这种行为并帮助纠正它?
在 ChartPanel.setPreferredSize
和 JFrame.validate
完成工作后调用 ChartPanel.setSize
!查看新代码:
frame = new JFrame();
frame.addComponentListener(new ComponentListener() {
@Override
public void componentResized(ComponentEvent e) {
// frame.repaint();
ChartPanel cp = (ChartPanel)panel.getComponents()[0];
cp.setPreferredSize(new java.awt.Dimension(panel.getWidth(), panel.getHeight()));
cp.setSize(new java.awt.Dimension(panel.getWidth(), panel.getHeight()));
// frame.invalidate();
frame.validate();
// frame.repaint();
}
...
});
...