从单独的类访问 JPanel 组件

2023-12-30

所以我想要一个在菜单页面和主应用程序页面之间切换的 CardLayout 类,但我想在它们自己的类中设计这两个面板,然后在不同的类中添加 ActionListener 和 CardLayout ,并让 ActionListener 使用在面板类之一中创建的按钮。

这是一个(不太短的)SSCCE,涵盖了我想说的内容:

import java.awt.*;
import javax.swing.*;

public class MenuPanel extends Frame{
    JPanel menuPanel;
    JButton login;
    JButton signup;

    public MenuPanel(){
        menuPanel = new JPanel(new GridBagLayout());
        login = new JButton("Login");
        signup = new JButton("Signup");
        
        menuPanel.add(login);
        menuPanel.add(signup);
        
    }
}
import java.awt.*;
import javax.swing.*;

public class MainPanel extends JFrame{
    JPanel menuPanel;
    JButton login;
    JButton signup;

    public MainPanel(){
        mainPanel = new JPanel(new GridBagLayout());=
        
        menuPanel.setBackground(Color.grey);
        
    }
}
import java.awt.*;
import javax.swing.*;

public class CardLayout extends Frame implements ActionL {
//Now how do I add the frames from the other classes so that I can add them to my CardLayout?
CardLayout cl = new CardLayout();
JPanel panelCont;
    public CardLayout() {
        frame.add(panelCont);

        panelCont = new JPanel(cl);
        //Here is where I'm having trouble
        panelCont.add(menuPanel, "1");
        panelCont.add(mainPanel, "2");

        cl.show(panelCont, "1");

        login.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                cl.show(panelCont, "2");
            }
        });
    }
}

public class Main {
    public static void main(String[] args) {
        new CardLayout();
    }
}

您无法添加Frames 到另一个组件。Frame是具有本机对等点的顶级组件。你应该从其他东西(JPanel?)继承

另外,顺便说一句,你所做的并不是好的设计。一般来说,在 MVC Swing 设计中,所有视图和控制方面都应该位于一个类中。不要将视图拆分为多个类,除非每个类都作为其自己的可重用小部件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从单独的类访问 JPanel 组件 的相关文章

随机推荐

  • 使用 Fold 依赖多个先前值来计算线性递归的结果

    I have a linear recurrence problem where the next element relies on more than just the prior value e g the Fibonacci seq
  • 我应该在创建通知之前调用 WakeLock 吗?

    我正在向 Android 应用程序添加通知 目前只有模拟器可供测试 收到通知时 将调用 GCMBaseIntentService 子类 GCMIntentService 中的 onMessage 方法 从这里我创建一个要显示的通知 如果我将
  • Kubernetes集群出站流量IP

    我在 Google Kubernetes Engine 上有一个 Kubernetes 集群 我想为集群的所有传出流量分配一个静态 IP 我已经保留了外部 IP 但无法使用 GCP 控制台将它们分配给集群 我找到了一个使用 cli 执行此操
  • 数据读取器检索数据

    我的数据库中有会员资格和预订表 其中包含属性 cust id 它是会员资格中的主键和预订中的参考键 当我执行数据读取器时 我希望它从会员表中读取 cust id 值 但它是从预订表中读取的 另外 当我比较两个 cust id 值时 1 个取
  • 通过 PayPal iOS SDK 进行 PayPal 实时交易的问题

    我正在为 iPad 开发 iOS 应用程序 版本 7 x 我们需要通过应用程序执行 PayPal 交易 我们包含了 PayPal iOS SDK 并参考他们的示例代码来执行交易 示例代码放置在here https github com pa
  • AWS Lambda 和 .NET Core - 使用 Linux 运行时?

    我正在用 C NET Core 编写 Alexa 技能 以便从 AWS Lambda 函数 在 Amazon Linux 上运行 运行 当我编译项目时 点网发布 我收到错误 找不到框架 NETCoreApp Version v1 0 的运行
  • 需要一点数学帮助来调整图像大小

    我有一个具有 X 宽度和 Y 高度值的图像 现在我想将高度设置为 60px 通过哪种计算我可以计算出图像正确调整大小的高度 我认为你正在努力保持纵横比 如果是这样 请使用以下命令 比率 原始高度 新高度 新宽度 原始宽度 比例
  • 在 Python (Pycharm) 中导入 numpy,安装了 Anaconda

    我对 python 很陌生 我正在尝试编写代码来导出一阶 ODE 因此 我需要某些软件包 例如 numpy 来执行此操作并安装了 Anaconda 当我尝试在 PyCharm 中使用 import numpy 命令时 它不起作用 我收到 M
  • 对产品列表进行分类的算法?拿2

    我问了一个类似的问题 https stackoverflow com questions 695347 algorithm to classify a list of products几周前就问过这个问题 但我没有正确地提出这个问题 所以我
  • 无法将 R 数据帧转换为 Spark DataFrame

    当我尝试使用以下方法将 R 中的本地数据帧转换为 Spark DataFrame 时 raw data lt as DataFrame sc raw data 我收到此错误 17 01 24 08 02 04 警告 RBackendHand
  • 如何禁用 OpenCV 相机中的缓冲区?

    我遇到过这种情况 我使用 OpenCV 来检测相机前面的人脸 并对这些人脸进行一些机器学习 我遇到的问题是 一旦我完成所有处理 并去抓取下一帧 我得到的是过去 而不是现在 意思是 我将读取缓冲区内的内容 而不是实际在相机前面的内容 由于我不
  • 在 C# 中克隆 VSTS 构建定义

    我正在使用 BuildHttpClient 的 GetDefinitionAsync 和 CreateDefinitionAsync 来克隆 VSTS 构建定义 这工作正常 但我想在项目的根文件夹之外的不同文件夹中创建构建定义 我可以通过
  • iOS 圆形渐变

    我的任务是用圆形渐变绘制线条 颜色应按圆圈变化 然后添加动画 现在我画了360层 有一定的间隔和不同的颜色 var colours UIColor UIColor var startAngle CGFloat 0 5 Double pi v
  • 无法从正文 onload 调用函数(未捕获的引用错误:未定义启动)javascript

    我有一个 body onload 调用 javascript 中的函数 我已经尝试了很多方法 但控制台只是打印到错误日志 未捕获的引用错误 未定义启动 我认为这可能是一个故障 如果它对您有用 请通知我 我的代码如下
  • 在控制器内创建会话 cookie

    我是 Tomcat servlet 和 Spring Web 的新手 我有 PHP 背景 所以至少可以说我有点迷失方向 我想要一个控制器为我创建一个会话 cookie 有人告诉我 我可以在标准 servlet 中获得这样的会话 protec
  • 下拉菜单:如何停用第一个(选定)选项?

    这是我正在使用的下拉菜单
  • 如何更改 Jenkins 中的 JAR 构建路径?

    我正在通过 Jenkins 构建一个 Java 项目 JAR 正在 C Windows System32 config systemprofile m2 repository com other 文件夹中创建 在 Jenkins 中执行 m
  • WriteConsoleOutputCharacter 导致控制台应用程序崩溃

    当尝试使用写入控制台输出字符 https learn microsoft com en us windows console writeconsoleoutputcharacter函数 应用程序崩溃 COORD pos pos X 0 po
  • 使用 boost::asio::read_async 读取 Protobuf 对象

    我正在使用 Boost asio 编写一个应用程序 其中客户端和服务器交换使用 google proto buffers 序列化的消息 我不知道通过网络发送的序列化消息的大小是多少 proto buf 对象似乎没有任何分隔符 以下是 pro
  • 从单独的类访问 JPanel 组件

    所以我想要一个在菜单页面和主应用程序页面之间切换的 CardLayout 类 但我想在它们自己的类中设计这两个面板 然后在不同的类中添加 ActionListener 和 CardLayout 并让 ActionListener 使用在面板