ここで同様の質問を見つけました:
Javaでサブクラス化せずにメソッドをオーバーライドする
しかし、私のものは少し異なります.2つのクラスがあり、1つはGUIベースで、もう1つはファーストクラスの要素を変更するためのメソッドです。基本的な機能を編集するだけなら問題ありませんが、継承せずに2番目のクラスから1番目のクラスのメソッドでjbuttonをオーバーライドしたいと考えています。どこから始めればよいですか?
2番目のクラスがJButtonを拡張し、必要なメソッドをオーバーライドし、そのクラスをGUIクラスに追加するという一時的な解決策があります(匿名オブジェクトかどうかは関係ありません)。しかし、私の質問への道を見つける方法を見つけたいのですが、それは可能ですか? ありがとう :)
編集
サンプルコードは次のとおりです。
最初のクラスは、jframe のボタンにすぎないため、コンストラクターにのみ追加します:
ButtonOverrider bo=new ButtonOverrider();
-> これはオーバーライド クラスです
button=bo.overridePaintComponent(bo);
//最初の試行
button=bo.overridePaintComponent();
//2 番目の試行
bo.overridePaintComponent(bo);
//3 番目の試行
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;
}