我有一个椭圆形的未修饰的JFrame,我想添加一个边框。
我希望我不必实现rootPane.paintComponent方法,并且我可以通过添加边框来实现这一点。
这在Java 7或8中是否可行?
答案 0 :(得分:2)
在paintComponent()
的实施中,使用setClip()
尺寸为Ellipse2D
的{{1}}来匹配图片的width
和height
。
private Ellipse2D.Double border = new Ellipse2D.Double();
…
public void paintComponent(Graphics g) {
super.paintComponent()
Graphics2D g2d = (Graphics2D) g;
…
int width = getWidth();
int height = getHeight();
g2d.setPaint(…);
g2d.fillRect(0, 0, width, height);
border.setFrame(0, 0, width, height);
g2d.setClip(border);
g2d.drawImage(image, 0, 0, width, height, this);
}
同时覆盖getPreferredSize()
,如here所示。