将从同一类创建的jpanel添加到cardlayout帧

时间:2013-10-04 15:07:49

标签: java swing jframe cardlayout

我有一个类读取一个excelfile并在jpanel内创建一个带有图形的框架。我通过jmenuitem中的actionlistener调用此类。然后我有另一个jmenuitem调用同一个类打开同一个文件,但是读取一个不同的excel表,并给出一个不同的图形(这是该类中唯一的变化字符串)。具有这些jmenitems的jmenubar属于程序启动的jframe。我想知道每次点击创建图形的jmenuitems是否有可能在新的jframe cardlayout中添加,以便我可以滚动它们。提前致谢

这是我当前用来在点击jmenuitem时在jframe中打开图表的代码:

public class startup extends JFrame  {   // creates a jframe with some stuff and the jmenubar

public void menu() {
...


                    menuItem.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent event2) {

                        new Thread(new Runnable() {
                                @Override
                                public void run() {
                          new ReadExcel();
                                    ReadExcel.excel(".xls", 0);  // this jmenuitem invokes the class to read the excelfile sheet 0
graphgen.main(null);
                                }
                            }).start();
                        }
                    });

                    subsubmenu1.add(menuItem);


menuItem.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent event2) {

                        new Thread(new Runnable() {
                                @Override
                                public void run() {
                          new ReadExcel();
                                    ReadExcel.excel(".xls", 1);  // this jmenuitem invokes the class to read the excelfile sheet 1

graphgen.main(null);
                                }
                            }).start();
                        }
                    });

                    subsubmenu1.add(menuItem);

....
}


          public static void main(String[] args)
            {


                GUIquery frame = new GUIquery();
                p.add(graphComponent, BorderLayout.CENTER);
                frame.setLayout(new BorderLayout());
                frame.add(p, BorderLayout.CENTER);
                frame.setJMenuBar(GUIquery.createMenuBar());
                frame.pack();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setResizable(true);
                frame.setSize(1600, 1200);
                frame.setVisible(true);


            }



    }

readexcel类只读取一个excelfile的excelsheet并返回一些在graphgen类中处理的arraylist。

public class graphgen extends JFrame {

public graphgen() {

        super("Results");



        gen();

    }

    public void gen(){

//creates the graphcomponent

getContentPane().add(graphComponent);
    add(graphComponent);

}

    public static void main(String[] args)
    {


        graphgen frame = new graphgen();
        p2.add(graphComponent, BorderLayout.CENTER);

    frame.add(p2, BorderLayout.CENTER);
        frame.pack();
        frame.setResizable(true);
        frame.setSize(1600, 1200);
        frame.setVisible(true);

}

1 个答案:

答案 0 :(得分:1)

使用Action封装目标组件,文件和工作表,如herehere所示。添加一个方法以根据所选工作表更新类的状态。在卡片之间导航的示例有herehere。另请参阅卡布局操作,引用here