创建新函数而不是覆盖 paintComponent
Create new function instead of overriding paintComponent
class MultiplicationTablePanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Multiplication Table", 0, 0);
如果我想在Panel上画东西,我需要重写paintComponent函数。如果我想创建一个新函数而不是覆盖,例如
"protected void testPaintComponent(Graphics g)"
不行,面板什么都不显示。背后的原因是什么?
这是因为 Swing 会在应该绘制组件时调用 paintComponent
。如果您发明了一种新方法,Swing 不会知道它,也不会调用它。
如果你想命名你的方法
protected void testPaintComponent(Graphics g) { ... }
您必须确保 paintComponent
按如下方式委托此方法:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
testPaintComponent(g);
}
class MultiplicationTablePanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Multiplication Table", 0, 0);
如果我想在Panel上画东西,我需要重写paintComponent函数。如果我想创建一个新函数而不是覆盖,例如 "protected void testPaintComponent(Graphics g)"
不行,面板什么都不显示。背后的原因是什么?
这是因为 Swing 会在应该绘制组件时调用 paintComponent
。如果您发明了一种新方法,Swing 不会知道它,也不会调用它。
如果你想命名你的方法
protected void testPaintComponent(Graphics g) { ... }
您必须确保 paintComponent
按如下方式委托此方法:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
testPaintComponent(g);
}