У меня есть следующий фрагмент кода,paintBorder переопределяется метод не вызывался
CustomBorderFactory.java
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
public class CustomBorderFactory extends EtchedBorder {
private static final long serialVersionUID = 1L;
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width,
int height) {
System.err.println("Painting here");
int w = width;
int h = height;
g.translate(x, y);
g.setColor(etchType == LOWERED ? getShadowColor(c)
: getHighlightColor(c));
g.drawRect(0, 0, w - 2, h - 2);
g.setColor(etchType == LOWERED ? getHighlightColor(c)
: getShadowColor(c));
g.drawLine(1, h - 3, 1, 1);
g.drawLine(1, 1, w - 3, 1);
g.drawLine(0, h - 1, w - 1, h - 1);
g.drawLine(w - 1, h - 1, w - 1, 0);
g.translate(-x, -y);
}
public static Border createEtchedBorder(Color black, Color red) {
return new EtchedBorder(black, red);
}
}
Проблема, переопределенный paintBorder не вызывался.
В моем тестовом коде,
JPanel panel = new Jpanel();
panel.setBorder(CustomBorderFactory.createEtchedBorder(Color.black,Color.red));
Почему метод paintBorder в CustomBorderFactory класса не вызывался. (Я могу сказать, что sys.err не печатается), хотя его переопределенный и по-прежнему вызывает метод суперкласса.
Am new to java. Пожалуйста помоги!
Это действительно избыточно? можете ли вы показать определение родительского метода? –