【发布时间】:2017-10-17 11:37:52
【问题描述】:
swing 遇到了一个关于 java-graphics 的问题...我想在 jframe 上画一些东西,代码如下:
PaintUtil 类:
public class PaintUtil extends JPanel{
public PaintUtil(){
this.setFocusable(true);
this.requestFocus();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
System.out.println("Repainted");
g.drawstuff...
}
}
主类:
public static PaintUtil util = new PaintUtil();
JFrame frame = new JFrame();
frame.setSize(500,600);
frame.setRezisable(false);
frame.add(util);
frame.setDefaultCloseOperation( 3 );
frame.getContentPane().setColor(Color.BLACK);
setup(); //This add some buttons
frame.setVisible(true);
util.repaint(); //not working
util.paintComponent(frame.getGraphics()); //works
你们能帮帮我吗?
【问题讨论】:
-
PaintUtil扩展了什么? -
PaintUtil 扩展 JPanel
-
你的组件真的在屏幕上吗?
-
repaint只不过是对RepaintManager的请求,它将决定何时触发绘制周期。组件可能不被绘制的原因有很多,大多数处理优化,例如不绘制在屏幕上实现的组件或大小为0x0的组件。我们当然可以继续“猜测”您问题的原因,或者您可以发送runnable example which demonstrates your actual problem -
在说“这不起作用”时,您至少可以更具体一点,为什么?怎么了 ?错误?你的预期结果是什么?!
标签: java swing graphics repaint