我回来时遇到了关于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
你们能帮助我吗?
答案 0 :(得分:2)
控制台中没有错误,没有消息,只有
frame.setLayout(null);
不要使用空布局。 Swing旨在与布局管理器一起使用。摆脱那种说法。
默认情况下,面板的大小为(0,0),因此无需绘制任何内容。
您需要覆盖面板的getPreferredSize()
方法,以便布局管理器完成其工作。
阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。