从最初的问题(下面),我现在提供以下奖励:
AlphaComposite圆角的基础解决方案.
JPanel. 希望有人快速选择这个,这似乎很容易.
如果有一个充分解释的原因,为什么永远不会这样做,其他人同意,我也会奖励赏金.
这是我想到的一个示例图像(但使用AlphaComposite)
原始问题
我一直试图找到一种使用合成来做圆角的方法,非常类似于如何用Java制作圆角图像或http://weblogs.java.net/blog/campbell/archive/2006/07/ java_2d_tricker.html.
但是,我没有中间BufferedImage的尝试不起作用 - 圆形目标合成显然不会影响源.我尝试了不同的东西,但没有任何作用.应该得到一个圆形的红色矩形,而不是我得到一个正方形.
所以,我有两个问题,真的:
1)有没有办法使这项工作?
2)中间图像是否会实际产生更好的性能?
SSCCE:
测试面板TPanel
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JLabel;
public class TPanel extends JLabel {
int w = 300;
int h = 200;
public TPanel() {
setOpaque(false);
setPreferredSize(new Dimension(w, h));
setMaximumSize(new Dimension(w, h));
setMinimumSize(new Dimension(w, h));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d …Run Code Online (Sandbox Code Playgroud) 我的最终目标是拥有JTextArea一张背景图片.我发现在线代码向我展示了如何做到这一点,但现在我遇到的问题是文本位于图像之上.
这就是我的意思:

有没有什么方法可以添加一种向内缩进,以便文本不与图像的边缘重叠?
这是原始评论气泡图像.

这是代码:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.GrayFilter;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class myBackgroundSample {
String file;
public myBackgroundSample(String i) {
file = i;
setItUp();
}
public void setItUp() {
final ImageIcon imageIcon = new ImageIcon(file);
JTextArea textArea = new JTextArea() {
Image image = imageIcon.getImage();
public void paint(Graphics g) {
setOpaque(false);
g.drawImage(image, 0, 0, this);
super.paint(g);
}
};
JFrame frame = new JFrame("Background Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); …Run Code Online (Sandbox Code Playgroud)