Java 中未调用 paintComponents 方法
paintComponents method not being called in Java
我看了一个教程并尝试做同样的事情,我写了完全相同的代码但它什么也没显示。我认为这是因为没有调用 paintComponent 方法,我也尝试通过 paintComponent 打印一些东西来控制台。
这是我的代码:
public class Line extends JPanel{
@Override
public void paintComponents(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(100, 10, 30, 40);
}
public static void main(String[] args) {
Line l =new Line();
JFrame myFrame = new JFrame("Line");
myFrame.setSize(600, 400);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.add(l);
myFrame.setVisible(true);
}
}
谢谢!
您要覆盖的是 paintComponent
,而不是带有 s
的 paintComponents
。
paintComponents
绘制当前组件的子组件(它有点告诉子组件在 Graphics
对象上绘制自己)。
paintComponent
绘制组件本身,这是您要重写以对组件进行自定义绘制的方法。
我看了一个教程并尝试做同样的事情,我写了完全相同的代码但它什么也没显示。我认为这是因为没有调用 paintComponent 方法,我也尝试通过 paintComponent 打印一些东西来控制台。
这是我的代码:
public class Line extends JPanel{
@Override
public void paintComponents(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(100, 10, 30, 40);
}
public static void main(String[] args) {
Line l =new Line();
JFrame myFrame = new JFrame("Line");
myFrame.setSize(600, 400);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.add(l);
myFrame.setVisible(true);
}
}
谢谢!
您要覆盖的是 paintComponent
,而不是带有 s
的 paintComponents
。
paintComponents
绘制当前组件的子组件(它有点告诉子组件在 Graphics
对象上绘制自己)。
paintComponent
绘制组件本身,这是您要重写以对组件进行自定义绘制的方法。