当前位置: 首页 > 知识库问答 >
问题:

将从同一类创建的JPanel添加到cardlayout框架

太叔烨霖
2023-03-14

我有一个类,它读取一个Excel文件,并在jpanel中创建带有图形的框架。我通过jmenuitem中的actionlistener调用这个类。然后我有另一个jmenuitem,它调用打开同一文件的同一个类,但读取不同的excel工作表,并给出不同的图形(这是类中唯一更改的字符串)。包含这些jMenitem的jmenubar属于程序启动的jframe。我想知道,是否有可能每次我点击创建要添加到新jframe cardlayout中的图形的jmenuitems,这样我就可以在它们上滚动。提前谢谢

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

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类只读取Excel文件的Excel工作表,并返回一些在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个答案

锺功
2023-03-14

使用Action封装目标组件、文件和工作表,如下所示。添加一个方法,根据所选的工作表更新类的状态。在卡片之间导航的例子可以在这里和这里看到。另请参见此处引用的卡片布局操作。

 类似资料:
  • 我正在尝试在程序运行期间将 JButton 添加到坐在 JFrame 中的 JPanel 中。该按钮实际上可以正常工作(可单击),但不会显示。 我已经使用setLayout(null)将框架和面板的布局都设置为null 这里可能发生了什么? 编辑:我只是尝试在面板的构造函数中简单地向jPanel添加一个jtab,但即使这样也不行…

  • 问题内容: 我在3个单独的类中有3个窗口,我想使用cardLayout,以便当你单击next按钮时,将出现下一个窗口。如何将包含不同元素的JPanels添加到一个cardLayout?这是第一个窗口:(尽管唯一的区别是背景-但它代表了我实际得到它的想法) 第二个窗口: 最后一个: 问题答案: 我做了一个小程序,希望程序中写的注释可以指导你了解如何使用CardLayout。

  • 问题内容: 我有一个gui,它的Panel包含一系列标签和TextField,并使用spring布局(这是mainPanel),而另一个Panel仅包含button(buttonPanel)。我正在尝试使我的mainPanel也具有垂直滚动条。我想实现我的GUI,以便在JFrame中有2个面板。mainPanel出现在框架的顶部,而buttonPanel出现在mainPanel的下方。 我的问题是

  • 我正在尝试将此 JPanel 添加到 JFrame 中,但我看不到他。当我创建新的 java 类并自己制作这个框架时,一切都很好。 来自JFrame表单的代码。 来自 JPanel 的代码: 来自Java类的代码。 我想不出区别在哪里。有人能帮我吗?

  • 我正在创建一个swing应用程序,并希望将JfreeChart添加到JPanel中。我创建了一个方法,在该方法中我创建了如下所示的图表: 创建了一个全局变量: 由于某种原因,当我点击按钮时,图表没有显示出来。

  • 我目前有一个主JFrame包含几个JPanels,每个面板中都有一些文本。创建JPanels的代码在一个单独的类中(它“实现”JPanels)。如何仅向单个面板添加JScrollPane? 我已经花了一些时间尝试这样做,但什么也没有发生。顺便说一下,我的JPanel使用GridLayout 上面的类是另一个面板类的实例变量,它是主面板“MenuHold”的实例变量。但使用“MenuHolder”的