我有以下摇摆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);
}
}
答案 0 :(得分:0)
从构造函数 public 创建container
的对象,即c
,并在c
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);