小编典典

Java&JFreeChart-如何使用其容器(例如JPanel)设置JFreeChart的ChartPanel调整大小?

java

我刚刚发现,当我将ChartPanel添加到JFrame时,随着JFrame的拖动或放大或缩小,ChartPanel都会调整大小以适合该框架。但是,当我将ChartPanel添加到JPanel时,随着JFrame调整大小,JPanel的大小(width和height)会更改以适合JFrame。但是,ChartPanel仅保留其尺寸,从而使扩大的JPanel留有很多空白空间。如何在GUI中使用ChartPanel的容器调整大小?

这是我的示例代码:

  1. 这种情况下,图表使用JFrame调整大小
ChartPanel chartPanel = new ChartPanel(createWhateverChart());
JFrame frame = new JFrame();
frame.add(chartPanel);
  1. 在这种情况下,我首先将ChartPanel添加到JPanel,以便于管理和更新图表,但ChartPanel不会使用JPanel / JFrame调整大小。
ChartPanel chartPanel = new ChartPanel(createWhateverChart());
JPanel panel = new JPanel("Who cares");
panel.add(chartPanel, BorderLayout.CENTER);
JFrame frame = new JFrame();
frame.add(panel);

阅读 371

收藏
2020-11-23

共1个答案

小编典典

试试我的代码,它可以正常工作。

注意 :

我有一帧包含一个panelMain,panelMain包含一个subPanel,一个subPanel包含ChartPanel。

frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));                      
JPanel panelMain = new JPanel(new GridLayout(0,2));            
ChartPanel chartPanel = createChart();        
JPanel subPanel = new JPanel(new BorderLayout());   
subPanel.setBorder(BorderFactory.createTitledBorder("Consommation"));
subPanel.setPreferredSize(new Dimension(400, 200));    
subPanel.add(chartPanel);


panelMain.add(subPanel);        
frame.add(panelMain);        
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

现在,当您调整窗口应用程序的大小时。您的chartPanel会自动调整大小。希望这可以帮助。

2020-11-23