1

我刚开始使用 Swing。我开始掌握它。

但是,我有一个关于摇摆屏幕导航的问题。

这就是我构建应用程序的方式。

  • 公共类 MainFrame 扩展了 JFrame
  • 公共类 LoginPanel 扩展 JPanel
  • 公共类 HomeScreenPanel 扩展 JPanel

在大型机中,我有以下代码:

public class MainFrame extends JFrame {

    public MainFrame() {
        initUI();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MainFrame ex = new MainFrame();
                ex.setVisible(true);
            }
        });
    }

    private void initUI(){
        InputScreenPanel inputScreenPanel = new InputScreenPanel();
        getContentPane().add(inputScreenPanel);
        Dimension dim = new Dimension(400, 300);
        setMinimumSize(dim);
    }
}

在 LoginPanel 中,我初始化屏幕并添加一个按钮和一个文本框。我为按钮单击事件编写了事件处理程序。我想从文本框中获取值并将用户重定向到 HomeScreenPanel。当此按钮单击正在执行上下文时,如何切换面板是 LoginPanel 并且我没有对框架的引用,因此我可以切换面板。

4

3 回答 3

3

我认为您在这里有两个选择:

  1. 您可以在创建 InputScreenPanel 时将 MainFrame 对象作为参数传递。你应该问问自己,你的 InputScreenPanel 知道你的 MainFrame 是否有意义。在某些情况下可能会,但根据您的示例,我会拒绝并选择第二个选项。
  2. 您可以为您的 InputScreenPanel 创建某种事件处理程序结构(如果您使用的是模型-视图-控制器设计,则可以创建它后面的任何模型结构)。用户将登录,这将创建一个事件,MainFrame(或其他类)可以响应该事件。
于 2012-10-19T08:34:07.947 回答
2

您应该使用 JDialog 作为登录部分,然后在新的 JFrame 中启动您的应用程序

于 2012-10-19T09:22:24.723 回答
1

我会使用某种能够对程序不同部分中的变化做出反应的模型/控制器。

我会连接这个控制器,这样你就可以在不影响应用程序的其余部分的情况下替换实现

基本上这意味着登录窗格和主窗格不会关心它们是如何显示的

于 2012-10-19T09:19:52.753 回答