java中在菜单之间跳转
我已经用Java开发命令行程序一段时间了,现在正在研究实现GUI解决方案的方法。我是新手,所以任何帮助都会非常有用。提前谢谢。 我最近问了另一个关于按钮的问题,但我现在有另一个问题 我从一本书中学习了如何使用动作监听器执行基于按钮的动作。然而,在这本书中,按钮只是简单地调用了一个方法,该方法生成文本输出 我需要一种方法,允许用户按下一个按钮,将他/她带到一个具有不同按钮/选项的新窗口,如果用户需要,他们可以按下另一个按钮返回到上一个窗口。如果有人能向我展示一个框架解决方案,并解释下面的示例: 用户将看到两个按钮,“库菜单”和“帐户菜单” 如果用户按下“library menu”(图书馆菜单),他们将被带到一个窗口,其中包含添加书籍、删除书籍等选项,最后一个按钮返回主屏幕。 如果用户按下“Accounts menu”(帐户菜单),则会显示一个新窗口/菜单,其中包含添加、删除、重命名等按钮,并再次显示一个返回主屏幕/主菜单的最终按钮 对于命令行,这很简单,因为选择library将调用library类中的方法。该方法将有一个开关盒,该开关盒根据用户输入调用不同的方法,例如,当用户输入“e”时,开关盒有一个从方法返回的选项,即返回语句将用户带回最初调用它的方法(在主屏幕中)java中在菜单之间跳转,java,swing,user-interface,frames,Java,Swing,User Interface,Frames,我已经用Java开发命令行程序一段时间了,现在正在研究实现GUI解决方案的方法。我是新手,所以任何帮助都会非常有用。提前谢谢。 我最近问了另一个关于按钮的问题,但我现在有另一个问题 我从一本书中学习了如何使用动作监听器执行基于按钮的动作。然而,在这本书中,按钮只是简单地调用了一个方法,该方法生成文本输出 我需要一种方法,允许用户按下一个按钮,将他/她带到一个具有不同按钮/选项的新窗口,如果用户需要,他们可以按下另一个按钮返回到上一个窗口。如果有人能向我展示一个框架解决方案,并解释下面的示例: 用
我非常感谢您在这方面提供的任何帮助/建议/信息 您知道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
}
});