BorderLayout问题

时间:2014-04-26 22:04:44

标签: java layout jfreechart border-layout

我有chartPanel(JFreeChart),buttonPanelerrorPanel

    frame.add(chartPanel, BorderLayout.PAGE_START);
    JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    errorPanel = new JLabel("Error String");
    errorPanel.setHorizontalAlignment(JLabel.CENTER);
    frame.getContentPane().add(buttonPanel, BorderLayout.CENTER);
    frame.getContentPane().add(errorPanel, BorderLayout.SOUTH);

当我更改应用程序窗口的高度时,buttonPanel和errorPanel消失了。

当我不使用JLabel时:

    frame.add(chartPanel);
    JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);

它改变了应用程序窗口的高度。如何使它正确,没有窗口缩放问题?

enter image description here

2 个答案:

答案 0 :(得分:2)

当您添加到JFrame时,默认位置是CENTER但是因为您将图表添加到PAGE_START现在它不可缩放...

溶液:

拿出来然后说

frame.add(chartPanel);

以及errorPanel和ButtonPanel

使用BorderLayout创建一个新的JPanel并将其添加到Frame Layout的SOUTH。 然后在JPanel里面添加你的ButtonPanel和ErroPanel就像你在你的Jframe中所做的那样..

答案 1 :(得分:0)

试试这个:

frame.addComponentListener(new ComponentListener(){

    public void componentResized(ComponentEvent e) {
        frame.pack();
    }

    public void componentMoved(ComponentEvent e) {}
    public void componentShown(ComponentEvent e) {}
    public void componentHidden(ComponentEvent e) {}
});