[英]Override method (append to other methods) in this class from another java class
[英]Java override method from another class without inheritance
我在這里發現了類似的問題:
覆蓋Java中沒有子類化的方法
但我的有點不同,我有兩個類,一個基於GUI,另一個只是修改第一類元素的方法。 如果它只是編輯基本函數,我沒有遇到任何問題,但現在我想從第二個類中覆蓋第一類方法中的jbutton而不繼承它。 我在哪里開始?
我有臨時解決方案,第二個類擴展JButton,覆蓋我想要的方法,並將該類添加到我的GUI類(匿名對象與否,無所謂)。 但我想找到一種方法來找到解決問題的方法,甚至可能嗎? 謝謝 :)
編輯
這是示例代碼:
第一類,因為它只是jframe中的一個按鈕,我只在構造函數中添加它們:
ButtonOverrider bo=new ButtonOverrider();
- >這是overrider類
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;
}
我在哪里開始?
繼承。 這是壓倒任何理由的唯一方法。 目前尚不清楚為什么你不想使用繼承,但這確實是覆蓋方法的唯一方法。 無論您使用匿名類還是命名類都是無關緊要的,但它必須擴展該類才能覆蓋該方法。 這就是覆蓋Java的工作方式。
編輯:您在更新的問題中顯示的代碼確實通過創建匿名內部類來使用繼承...但它沒有按照我期望的方式執行,因為它創建了一個新對象而不是覆蓋方法現有的對象。 永遠不會使用您的參數值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.