Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Switch语句和页面内容控件_Java_Jpanel_Switch Statement - Fatal编程技术网

Java Switch语句和页面内容控件

Java Switch语句和页面内容控件,java,jpanel,switch-statement,Java,Jpanel,Switch Statement,我一直在尝试创建一个类来决定在JFrame上打印哪个JPanel。JPanel是“addNew”和“searchPanel”。addNew由一个名为“addNew”的类创建,它包含允许用户向数据库中添加新内容的内容项。 searchPanel位于另一个类“searchPanel”中,该类允许用户在数据库中搜索内容 绘制两个JPanel的JFrame在它自己的类中,只有两个按钮“AddNewItem”和“Search”。单击其中一个按钮之前,不会绘制JPanel 还有第三个类,它通过switch语

我一直在尝试创建一个类来决定在JFrame上打印哪个JPanel。JPanel是“addNew”和“searchPanel”。addNew由一个名为“addNew”的类创建,它包含允许用户向数据库中添加新内容的内容项。 searchPanel位于另一个类“searchPanel”中,该类允许用户在数据库中搜索内容

绘制两个JPanel的JFrame在它自己的类中,只有两个按钮“AddNewItem”和“Search”。单击其中一个按钮之前,不会绘制JPanel

还有第三个类,它通过switch语句根据“buttonClick”上传递的值(1或2)确定在JFrame上绘制哪个JPanel,我认为这就是问题所在

到目前为止,我的代码是:

import Panels.AddNew;
import SearchWakili.SearchPanel;
import javax.swing.JPanel;

public class Redirect {
    public static JPanel panelRedirect = new JPanel();

    public static JPanel value;

    public static JPanel pageAddNewFunction () {
        AddNew addNew = new AddNew();
        panelRedirect.add(addNew);
        return panelRedirect;
    }

    public static JPanel SearchPanelFunction () {
        SearchPanel searchPanel = new SearchPanel();
        panelRedirect.add(searchPanel);
        return panelRedirect;
    }

    public static JPanel pageRedirect (int pageID) {
        switch (pageID) {
            case 1:
                value = pageAddNewFunction();
            break;
            case 2:
                value = SearchPanelFunction();
                break;
        }
        return value;

    }

}
代码不起任何作用。不过,我没有收到任何代码错误消息。当我不通过“Redirect”类重定向而直接调用时,JPanels可以很好地打印。 我做错了什么?是否有其他方法可以使用独立类根据单击的按钮决定要绘制的JPanel

事先非常感谢

哦!!我不想使用卡片布局。我想自己学习如何编写代码

绘制JFrame的部分代码:

import java.awt.Color;
import java.lang.ProcessBuilder.Redirect;
import javax.swing.JFrame;

public class FrameContainer {
    public static  JFrame Home;

    public static void createAndShowGUI() {
        // Create and set up the Frame
        JFrame.setDefaultLookAndFeelDecorated(true);

        Home = new JFrame();
        Home.setUndecorated(true);
        Home.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        Home.setResizable(false);
        Home.setBounds(0, 0, 400, 400);
        Home.setBackground(Color.gray);

        // Redirect redirect = new Redirect();
        Home.add(Redirect.panelRedirect);

        // Display the window
        Home.pack();
        Home.setVisible(true);
    }
}
声明事件的代码的一部分:

public class Home {

    // The method that calls the type of JPanel (1) to be drawn
    private void mouseClickedAddNew(java.awt.event.MouseEvent evt) {                                    
        // FrameContainer.createAndShowGUI();
        Redirect.pageRedirect(1);
    }
}

首先,根据请求初始化模块不是一个好的做法

换句话说,您应该有一个在主类构造函数中调用的方法,该方法将为变量分配空间并进行计算,因此当您实际单击按钮时,您运行的唯一命令是使每个面板可见的命令

这很可能就是你正在做的事情不起作用的原因

因此,只需让代码最初加载两个面板,然后当单击按钮时,执行show()或hide()(我相信这些是方法,但我使用Swing的频率不够高,所以措辞可能会有所不同)