有人会知道我为什么不调用类PF的函数paintComponent?
public class Fenetre
{
private JFrame jframe;
public Fenetre()
{
jframe = new JFrame(" works");
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setLayout(new BorderLayout());
jframe.setLocationRelativeTo(null);
jframe.setContentPane(new P());
jframe.pack();
jframe.setVisible(true);
}
public class P extends JComponent
{
public P()
{
this.setPreferredSize(new Dimension(WI,HI));
this.add(new PF());
}
public class PA extends JComponent
{
@Override protected void paintComponent(Graphics g) {
DrawX(g);
DrawY(g);
}
public void DrawX(Graphics g)
{
\* .. */
}
public void DrawY(Graphics g)
{
\* ..*/
}
}
public class PF extends PA
{
@Override protected void paintComponent(Graphics g) {
super.paintComponent(g);
drawS(g);
drawT(g);
}
public void drawS(Graphics g)
{ \* .. */
}
public void drawT(Graphics g)
{
\* ... */
}
}
当我在PF构造函数中设置setSize函数时它起作用,但是setPreferredSize也可以工作但不允许类PF调整大小,也就是说如果我调整我的Jframe大小,PF绘制不会调整大小..
希望有人可以帮助我,谢谢。
答案 0 :(得分:3)
可能的问题可能与PA
和PF
没有首选大小(默认值为0x0)以及默认情况下JComponent
的事实有关没有布局经理
paint子系统已确定子组件不需要按原样绘制,从技术上讲,在屏幕上看不到
首先设置P
的布局管理器并覆盖getPreferredSize
的{{1}}方法。
当你覆盖方法时,你总是打电话给PA
是非常重要的。当你处理像super.paintComponent
这样的透明组件时,这是非常重要的,因为如果你不这样做会引入非常讨厌的绘画工件