Java 重写来自另一个类的方法而不继承

2023-12-06

我在这里发现了类似的问题:
Java 中无需子类化即可重写方法

但我的有点不同,我有两个类,一个基于 GUI,另一个只是修改第一类中元素的方法。如果它只是编辑基本功能,我不会遇到任何问题,但现在我想从第二类重写第一类方法中的 jbutton 而不继承它。我必须从哪里开始?

我有临时解决方案,即第二个类扩展 JButton,重写我想要的方法,并将该类添加到我的 GUI 类中(是否是匿名对象,并不重要)。但我想找到一种方法来解决我的问题,这可能吗?谢谢 :)

Edit
这是示例代码:

第一类,因为它只是 jframe 中的一个按钮,我只在构造函数中添加这些:
ButtonOverrider bo=new ButtonOverrider();-> 这是覆盖类
button=bo.overridePaintComponent(bo);//第一次尝试
button=bo.overridePaintComponent();//第二次尝试
bo.overridePaintComponent(bo);//第三次尝试

这是 ButtonOverrider 方法:

public JButton ButtonOverrider(JButton button) {
  button = new JButton() {
    @Override
    protected void paintComponent(Graphics g) {
      Graphics2D g2 = (Graphics2D) g.create();
      GradientPaint gp = new GradientPaint(0, 0,
      Color.blue.brighter().brighter(), 0, getHeight(),
      getBackground().darker().darker());

      g2.setPaint(gp);
      g2.fillRect(0, 0, getWidth(), getHeight());
      g2.dispose();

      super.paintComponent(g);
      super.setContentAreaFilled(false);
      super.setFocusPainted(false);
      super.setBorder(new LineBorder(Color.yellow, 2));
      super.setText("Shuro");
    }
  };
  return button;
}

我必须从哪里开始?

具有继承性。这是覆盖有意义的唯一方式。尚不清楚why您不想使用继承,但这确实是重写方法的唯一方法。使用匿名类还是命名类并不重要,但它must扩展类以覆盖该方法。这就是 Java 中重写的工作方式。

编辑:您在更新的问题中显示的代码does通过创建匿名内部类来使用继承...但它并没有达到我期望的效果,因为它创建了一个new对象而不是重写方法existing目的。您的参数值从未被使用。

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

Java 重写来自另一个类的方法而不继承 的相关文章

  • Java中如何动态添加charsequence[]中的数据?

    初始化的一种方法charsequence is charsequence item abc def 但我不想以这种方式初始化它 有人可以建议其他方式吗 比如我们初始化的方式string arrays 首先 修复变量声明 charsequen
  • 如何在谷歌地图中使用latlng字符串数组绘制多边形

    在我的应用程序中 我有包含 imagview 的 recyclerview 并且该 imageview 通过使用我存储在 sqlite 中的坐标包含静态地图图像 当我单击该图像时 我将该字符串数组格式的坐标传递给其他地图活动 然后使用该字符
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • 如何避免 Java 中的忙旋转

    我有一个多线程应用程序 其中一个线程向另一个线程发送消息 等待线程轮询消息并做出反应 处理锁 像这样 等待线程代码 while true if helloArrived System out println Got hello if bye
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • 如何显示/隐藏jsf组件

    在我的一个 JSF 应用程序中 顶部的标题部分包含 selectOneMenu 底部的内容部分显示过滤器组件 默认情况下 应用程序首先在顶部显示 selectOneMenu 数据 在底部显示相应的 Filter 信息 如果用户选择不同的se
  • 到底什么是哈希冲突

    HashMap 中的哈希冲突或哈希冲突并不是一个新主题 我遇到过几个博客和讨论板 以模糊且详细的方式解释如何产生哈希冲突或如何避免它 我最近在一次采访中遇到了这个问题 我有很多事情要解释 但我认为很难准确地给出正确的解释 抱歉 如果我的问题
  • IntSummaryStatistics的summaryStatistics方法

    为什么空 IntStream 上的 summaryStatistics 方法返回整数的最大和最小值作为流中存在的最大和最小 int 值 IntStream intStream IntStream of IntSummaryStatistic
  • 在 SWT 中单击鼠标触发事件?

    在SWT中 对于MouseListener接口 可用的方法有mouseUp mouseDown and mouseDoubleClick 如何根据用户点击触发事件 我们可以通过结合来做到这一点mouseUp and mouseDown 但没
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通
  • Java检测鼠标长按

    如果用户按下 JList 组件超过 3 秒 有什么方法可以捕获事件吗 我发现困难的部分是即使在用户松开鼠标左键之前也需要触发事件 这可以通过 mousePressed 和 mouseReleased 组合轻松完成 您可以在 mouseDow
  • 为什么java(>=7版本)不支持运行没有main方法的程序? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 class WithoutMain static System out println Without main class Sy
  • java.lang.ClassCastException: [B 无法转换为 java.lang.String

    我编写了一个带有字段 LoginId 和密码的实体类 我使用 AES ENCRYPT 加密密码并将其存储在数据库中 我只想检索已解密的密码 所以 我使用 AES DECRYPT 使用本机查询是在 OPen JPA 2 0 中 我写的查询是
  • iText7 将 SVG 添加到 PdfDocument 中以及可能出现的问题

    关于问题的答案 如何使用 iText7 将 SVG 添加到 PDF 这是一个链接点击这里 https stackoverflow com questions 50059456 how to add an svg to a pdf using
  • Wildfly 10.1 消耗所有核心

    我们最近将银行应用程序从 java 1 6 升级到 1 8 将 jboss 4 x 升级到 wildfly 10 1 我们观察到 java 消耗了机器上可用的所有核心 10 有人可以告诉是什么原因吗 通常情况下 jboss 4 x 的最大
  • C++ 虚拟关键字与重写函数

    我正在学习c 并且正在学习virtual关键字 我在互联网上搜索试图理解它但无济于事 我进入编辑器并做了以下实验 期望它打印两次基本消息 因为我的印象是需要 virtual 关键字来覆盖函数 然而 它打印出了两条不同的消息 有人可以向我解释
  • 如何从Java中的连接获取查询字符串?

    我正在编写一个方法 尝试记录数据库调用 形成连接到它的连接 在查询之后 有很多地方调用方法 connect 来启动并调用 cleanUp 方法来结束 我不能并且不想修改每个地方 所以顺序是这样的 Connection con connect
  • 有没有办法处理Java堆空间异常[重复]

    这个问题在这里已经有答案了 我正在寻找将文件输入流转换为大文件 文件大小为 100MB 并且抛出 java lang OutOfMemoryError Java Heap space import java io FileInputStre
  • 文档过滤器在 Java 中不起作用?

    在超过 10 个字符的文本字段中 它必须显示错误 为此 我使用了文档过滤器 JTextField field JTextField txtFld AbstractDocument document AbstractDocument fiel
  • 安装 JDK 时出错:keytool 命令需要已安装的 proc fs (/proc)。 Linux 的 Windows 子系统

    我尝试在 Linux 的 Windows 子系统 Ubuntu 14 04 上安装 Oracle JDK 1 7 但出现以下错误 the keytool command requires a mounted proc fs proc Jav

随机推荐

  • 从渲染器接收消息超时:10.000

    运行我的场景时出现以下错误 org openqa selenium TimeoutException 超时 接收超时 来自渲染器的消息 10 000 会话信息 chrome 79 0 3945 79 构建信息 版本 3 14 0 修订版 a
  • 如何继承GWT项目中所需的模块?

    我想在我的 GWT 项目中使用 GWT FXv0 5 0MS 1 jar 我将 jar 文件添加到项目路径并使用语法上的代码 现在收到未继承的错误 错误信息是 11 28 48 829 ERROR uibuilder Line 80 No
  • 尽管 JavaFx 类存在于 JDK 中,但 Java 无法找到 JavaFx 类

    我目前正在开发一个使用 javafx 作为 UI 的应用程序 我使用的是java 9 当我从github上拉出来继续在我的新计算机上开发并编译时 所有javafx类的引用都存在编译错误 并且只有javafx类 我在外部资源中的jdk中搜索了
  • 如何在Python中单行输入n个数字[重复]

    这个问题在这里已经有答案了 就像在 C 中一样 我如何要求用户输入一个范围内的内容 下面是 C 中获取用户输入的代码 include
  • 将环境变量传递给 gradle.properties

    我有一个这样的属性设置 url localhost 3206 有没有办法像下面这样指定 url hostname 3206 我不认为 gradle properties 支持插值 但是 我建议采用另一种方法来实现此目的 在你的 gradle
  • Asp.net 表单身份验证和多个域

    我有两个域 domain1 com 和domain2 com 指向同一个asp net 网站 该网站使用asp net 内置表单身份验证 问题是 即使域指向同一网站 用户一次也只能针对一个域进行身份验证 因此 如果他首先使用 www dom
  • JSF 2.0 中的 WEB.XML 错误页面

    我正在使用 JSF2 和 Glassfish 3 0 我有一个非常简单的应用程序 我正在尝试设置一些默认错误页面404 and 500 error 这是WEB XML部分
  • 插入表单时如何删除 Word 标记垃圾?

    我正在用 PHP 构建一个 CMS 我担心的一个问题是用户必须从现有的 Word 和 Excel 但不用担心 文档中填写数据 现在 我已经看到了当他们不小心从 Word 复制并粘贴到文本区域时会发生什么 数据库充满了垃圾标记 现在 我当然可
  • Xamarin 链接器:未找到 Cirrious.CrossCore.IoC.MvxPropertyInjector 类型的默认构造函数

    使用 HotTuna 包中的 FirstView 的骨架项目 并将构建链接器行为设置为 链接所有程序集 我收到以下错误 System MissingMethodException 找不到 Cirrious CrossCore IoC Mvx
  • 如何设置 application/json 以外的 Content-Type

    我正在尝试通过 AFNetworking2 0 向我的服务器发送 REST API 我们的服务器只接受Content Type as application vnd mycom mycom csc json当我发送请求时 它确实是json格
  • 启动本地azure项目时调试器无法连接

    好的 首先 这就是我所做的 安装 AZURE 工具 Reboot 启动 Visual Studio 新的 Azure 项目 添加 Web 角色 asp net MVC 4 beta Web 角色 按 F5 调试 它启动存储模拟器和计算模拟器
  • 如何设置表适配器的连接字符串(动态设置的连接字符串)

    我刚刚从另一位不再在公司工作的开发人员那里继承了 数据库专家 的角色 所以如果我听起来特别菜鸟 请原谅我 该应用程序是一个 VB NET 4 应用程序 我们的表适配器的数据库连接字符串是 my settings My Settings DB
  • 在Unity3d C#中访问动态添加的组件

    添加后Component to a GameObject通过GameObject AddComponent方法 我怎样才能访问这个Component来自另一个脚本 这是 myScript 代码 未附加到游戏对象 using UnityEng
  • 如何在 Python 中将一个列表拆分为两个唯一的列表?

    嗨 我有一个清单如下 listt a b c d e f g h i j k l m n o 15名成员 我想把它变成 3 个列表 我使用了这段代码 它有效 但我想要唯一的列表 这给了我 3 个具有共同成员的列表 import random
  • Octave - 如何在 Windows 上安装软件包

    Question 由于问题在修复了 Octave urlread 导致无法使用给定 CA 证书对对等证书进行身份验证的问题 我无法在 Windows 上安装 Octave 软件包 请建议其他安装方式 我特别想经历梯度 梯度图和切平面这需要符
  • ASP.NET 和 WordPress 之间共享身份验证

    我现在的情况是需要在 ASP NET 网站和 WordPress 之间自动验证用户 这个想法是 一旦您登录到 ASP NET 网站 并且浏览 WP 页面 您就会自动登录 反之亦然 在 ASP NET 中 我可以针对 WP 数据库对用户进行身
  • 使用sql/plsql,如何找出文本使用的字符集?

    我有一个 Oracle 数据库 它存储来自世界各地 不同语言的文档内容 文档存储在一个带有 BLOB 列的表中 该列存储文档的内容 我想通过 Oracle 过程找出每个文档的字符集是什么 我不想使用 CSSCAN 实用程序 因为您似乎必须在
  • 所有 JSON 对象也是有效的 JavaScript 对象吗?

    The JSON标准以一种方式定义对象 并且ECMAScript JavaScript 标准在另一个标准中定义了它 人们常说 JSON 对象是 JavaScript 对象的子集 这是真的吗 每个 JSON 对象也是一个有效的 JavaScr
  • 无法使用 ApachePOI 打开 excel - 出现异常

    在尝试使用 Apache POI 打开 excel 时 我得到了 org apache poi openxml4j exceptions InvalidOperationException Can t open the specified
  • Java 重写来自另一个类的方法而不继承

    我在这里发现了类似的问题 Java 中无需子类化即可重写方法 但我的有点不同 我有两个类 一个基于 GUI 另一个只是修改第一类中元素的方法 如果它只是编辑基本功能 我不会遇到任何问题 但现在我想从第二类重写第一类方法中的 jbutton