Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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中在菜单之间跳转_Java_Swing_User Interface_Frames - Fatal编程技术网

java中在菜单之间跳转

java中在菜单之间跳转,java,swing,user-interface,frames,Java,Swing,User Interface,Frames,我已经用Java开发命令行程序一段时间了,现在正在研究实现GUI解决方案的方法。我是新手,所以任何帮助都会非常有用。提前谢谢。 我最近问了另一个关于按钮的问题,但我现在有另一个问题 我从一本书中学习了如何使用动作监听器执行基于按钮的动作。然而,在这本书中,按钮只是简单地调用了一个方法,该方法生成文本输出 我需要一种方法,允许用户按下一个按钮,将他/她带到一个具有不同按钮/选项的新窗口,如果用户需要,他们可以按下另一个按钮返回到上一个窗口。如果有人能向我展示一个框架解决方案,并解释下面的示例: 用

我已经用Java开发命令行程序一段时间了,现在正在研究实现GUI解决方案的方法。我是新手,所以任何帮助都会非常有用。提前谢谢。 我最近问了另一个关于按钮的问题,但我现在有另一个问题

我从一本书中学习了如何使用动作监听器执行基于按钮的动作。然而,在这本书中,按钮只是简单地调用了一个方法,该方法生成文本输出

我需要一种方法,允许用户按下一个按钮,将他/她带到一个具有不同按钮/选项的新窗口,如果用户需要,他们可以按下另一个按钮返回到上一个窗口。如果有人能向我展示一个框架解决方案,并解释下面的示例:

用户将看到两个按钮,“库菜单”和“帐户菜单” 如果用户按下“library menu”(图书馆菜单),他们将被带到一个窗口,其中包含添加书籍、删除书籍等选项,最后一个按钮返回主屏幕。 如果用户按下“Accounts menu”(帐户菜单),则会显示一个新窗口/菜单,其中包含添加、删除、重命名等按钮,并再次显示一个返回主屏幕/主菜单的最终按钮

对于命令行,这很简单,因为选择library将调用library类中的方法。该方法将有一个开关盒,该开关盒根据用户输入调用不同的方法,例如,当用户输入“e”时,开关盒有一个从方法返回的选项,即返回语句将用户带回最初调用它的方法(在主屏幕中)


我非常感谢您在这方面提供的任何帮助/建议/信息

您知道actionListener,您可能知道如何创建JFrame,而且您的逻辑似乎还可以。如果我错了,请纠正我,你只需要一个ActionListener的骨架?
对于按钮的鼠标听写器,这应该可以正常工作:


您知道actionListener,您可能知道如何创建JFrame,而且您的逻辑似乎还可以。如果我错了,请纠正我,你只需要一个ActionListener的骨架?
对于按钮的鼠标听写器,这应该可以正常工作:


通常不建议向用户显示多个窗口或框架,这样会很快变得混乱和烦人

通常,如果要切换视图,应该使用,这将允许您更改用户主显示上的内容


您还可以使用允许用户在不同视图之间随意移动的,通常不建议向用户显示多个窗口或帧,这样会很快变得混乱和烦人

通常,如果要切换视图,应该使用,这将允许您更改用户主显示上的内容


您还可以使用一个允许用户在不同视图之间随意移动的面板,您可以为每个“窗口”创建一个JPanel,并在JFrame中切换它。为了拥有相同的设计,将来可以修改,您需要某种建模:添加按钮等的生成步骤

使用Action-s(AbstractAction)有助于解耦,分离模型视图控制器中的所有对象

真正的应用程序可能是一个主JFrame,可能会调用一些JFrame,当然是@MadProgrammer提出的想法。您的JPanel可以插入,无论是在JTabbedPane、JInternalFrame还是其他任何地方


让MVC类提供一个JPanel,管理操作。

您可以为每个“窗口”创建一个JPanel,并在JFrame中切换它。为了拥有相同的设计,将来可以修改,您需要某种建模:添加按钮等的生成步骤

使用Action-s(AbstractAction)有助于解耦,分离模型视图控制器中的所有对象

真正的应用程序可能是一个主JFrame,可能会调用一些JFrame,当然是@MadProgrammer提出的想法。您的JPanel可以插入,无论是在JTabbedPane、JInternalFrame还是其他任何地方


让MVC类提供一个JPanel来管理操作。

您可能希望首先创建所有windos(新窗口),并且只在单击按钮时显示它们,这样您就不会有同一窗口的多个实例

public MainWindow extends JFrame
{
    private LibraryWindow libWin;
    private AccountsWindow accWin;

    public MainWindow()
    {
        libWin = new LibraryWindow();
        libWin.setParent(this);
        accWin = new AccountsWindow();
        accWin.setParent(this);

        ...

        this.show();
    }

    btnLib.addMouseListener( new MouseAdapter() { // Adding a mouseListener to your component
    // Mouse is pressed in this component
    @Override
    public void mousePressed( MouseEvent e ){
        libWin.show(); //shows your window on top of the main window

        //if you want to switch windows you can hide the parent
        this.hide();
    }
});


public LibraryWindow extends JFrame
{


    public LibraryWindow()
    {
        //create/design the window

        ...

        //don't show the window, the main window will do that
    }

    btnExit.addMouseListener( new MouseAdapter() { // Adding a mouseListener to your component
    // Mouse is pressed in this component
    @Override
    public void mousePressed( MouseEvent e ){

        //if you want to switch windows you can show the parent
        this.parent.show();

        this.hide(); //only hide the window in order to reuse it
        //restore the window to its initial state
    }
});

您可能希望首先创建所有windos(新窗口),并仅在单击按钮时显示它们,这样您就不会有同一窗口的多个实例

public MainWindow extends JFrame
{
    private LibraryWindow libWin;
    private AccountsWindow accWin;

    public MainWindow()
    {
        libWin = new LibraryWindow();
        libWin.setParent(this);
        accWin = new AccountsWindow();
        accWin.setParent(this);

        ...

        this.show();
    }

    btnLib.addMouseListener( new MouseAdapter() { // Adding a mouseListener to your component
    // Mouse is pressed in this component
    @Override
    public void mousePressed( MouseEvent e ){
        libWin.show(); //shows your window on top of the main window

        //if you want to switch windows you can hide the parent
        this.hide();
    }
});


public LibraryWindow extends JFrame
{


    public LibraryWindow()
    {
        //create/design the window

        ...

        //don't show the window, the main window will do that
    }

    btnExit.addMouseListener( new MouseAdapter() { // Adding a mouseListener to your component
    // Mouse is pressed in this component
    @Override
    public void mousePressed( MouseEvent e ){

        //if you want to switch windows you can show the parent
        this.parent.show();

        this.hide(); //only hide the window in order to reuse it
        //restore the window to its initial state
    }
});