0

我刚刚发现,当我将 ChartPanel 添加到 JFrame 时,ChartPanel 将调整大小以适应框架,因为 JFrame 被拖得更大或更小。但是,当我将 ChartPanel 添加到 JPanel 时,JPanel 的大小(宽度和高度)会随着 JFrame 调整大小而更改以适应 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);
4

1 回答 1

3

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

注意 :

我有一个包含 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 将自动调整大小。希望这可以帮助。

于 2014-01-17T09:12:40.443 回答