2014-09-11 64 views
1

在我的节目我尝试设置一个JLabel的片段是这样的:在设置JLabel的剪辑的形状(多边形)getClip()仍然返回null

JLabel jl = new JLabel(); 
jl.setVisible(true); 
jl.setSize(50, 50); 
componentWhereIPutEverything.add(jl); 
jl.setLocation(50 , 50); 

int xx[] = { (int) UpLeft.getX(), (int) UpRigth.getX(), (int) BottomRigth.getX(), (int) BottomLeft.getX() }; 
int yy[] = { (int) UpLeft.getY(), (int) UpRigth.getY(), (int) BottomRigth.getY(), (int) BottomLeft.getY() }; 
Polygon poly = new Polygon(xx, yy, xx.length); 
jlabel.getGraphics().setClip(poly); 

在此之后,我尝试:

jl.getGraphics().getClip() 

并且它返回null。 我该如何解决它?错误在哪里? 谢谢;)

回答

1

仅仅因为你在一个图形对象上设置剪辑并不意味着它将在那里为所有图形对象。你最好的解决办法是重写的getGraphics(),并在那里加入您setClip的

public Graphics getGraphics() { Graphics g = super.getGraphics(); g.setClip(...); return g; }

+0

我很抱歉,我犯了一个错误:我写jlabel.getGraphics()setClip的(多); 而不是 jl.getGraphics()。setClip(poly); 那么,我的代码还是错的? 感谢您的耐心等待 – 2014-09-16 13:48:28