来自另一个没有继承的类的Java覆盖方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了来自另一个没有继承的类的Java覆盖方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1653字,纯文字阅读大概需要3分钟。
内容图文
![来自另一个没有继承的类的Java覆盖方法](/upload/InfoBanner/zyjiaocheng/803/f32a862cdade45e8aa9970ec5b59e82c.jpg)
我在这里发现了类似的问题:
overriding methods without subclassing in Java
但我的有点不同,我有两个类,一个基于GUI,另一个只是修改第一类元素的方法.如果它只是编辑基本函数,我没有遇到任何问题,但现在我想从第二个类中覆盖第一类方法中的jbutton而不继承它.我在哪里开始?
我有临时解决方案,第二个类扩展JButton,覆盖我想要的方法,并将该类添加到我的GUI类(匿名对象与否,无所谓).但我想找到一种方法来找到解决问题的方法,甚至可能吗?谢谢 :)
编辑
这是示例代码:
第一类,因为它只是jframe中的一个按钮,我只在构造函数中添加它们:
ButtonOverrider bo = new ButtonOverrider(); – >这是重载类
按钮= bo.overridePaintComponent(BO); //第一次尝试
按钮= 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;
}
解决方法:
Where do I have to start?
继承.这是压倒任何理由的唯一方法.目前尚不清楚为什么你不想使用继承,但这确实是覆盖方法的唯一方法.无论您使用匿名类还是命名类都是无关紧要的,但它必须扩展该类才能覆盖该方法.这就是覆盖Java的工作方式.
编辑:您在更新的问题中显示的代码确实通过创建匿名内部类来使用继承…但它没有按照我期望的方式执行,因为它创建了一个新对象而不是覆盖方法现有的对象.永远不会使用您的参数值.
内容总结
以上是互联网集市为您收集整理的来自另一个没有继承的类的Java覆盖方法全部内容,希望文章能够帮你解决来自另一个没有继承的类的Java覆盖方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。