Java swing按钮不会添加新的容器组件

时间:2014-02-18 13:42:29

标签: java swing

我有以下摇摆App。问题是我希望单击按钮操作将新组件添加到Container c。只要在构造函数中单独调用方法AddGraph(),就会添加图表。但是,如果我在actionPerformed()内调用它,则不会添加图表。 我已尝试让AddGraph()返回图表对象,然后将其添加到actionPerformed()但仍无法正常工作。它应该是非常基本的东西,但我找不到正确的方法。

public class MainFrame extends JFrame {

        ChartPanel chartPanel;

        public MainFrame(String title)
        {
            super(title);

    //      Set layout manager
            setLayout(new BorderLayout());

    //      Create Swing components
            JButton button = new JButton("Click me");

    //      Add swing components to content pane
            final Container c = getContentPane();

            c.add(button, BorderLayout.SOUTH);

            AddGraph(c);

    //      button behaviour here
            button.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {


                    //AddGraph(c);

                }

            });
        }

        public void AddGraph(Container c)
        {

    .
    .
    .
            chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));



            c.add(chartPanel, BorderLayout.CENTER);


        }

    }

2 个答案:

答案 0 :(得分:0)

从构造函数 public 创建container的对象,即c,并在c

中添加chartPanel
public void AddGraph(){
    .
    .
    .
    chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));

    //    Container c = getContentPane();

    c.add(chartPanel, BorderLayout.CENTER);
}

答案 1 :(得分:0)

你的AddGraph应该是这样的:

public void AddGraph(Container c)
{
   .
   .
   chartPanel = new ChartPanel(chart);
   chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));

   c.add(chartPanel, BorderLayout.CENTER);

}

然后在构造函数中,您可以将其称为:

AddGraph(c);