相关疑难解决方法(0)

Java - 在paintComponent中使用合成的圆角面板

从最初的问题(下面),我现在提供以下奖励:

AlphaComposite圆角的基础解决方案.

  • 请用一个演示JPanel.
  • 角落必须完全透明.
  • 必须能够支持JPG绘画,但仍然有圆角
  • 不得使用setClip(或任何剪辑)
  • 必须有不错的表现

希望有人快速选择这个,这似乎很容易.

如果有一个充分解释的原因,为什么永远不会这样做,其他人同意,我也会奖励赏金.

这是我想到的一个示例图像(但使用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)

java swing compositing rounded-corners paintcomponent

14
推荐指数
1
解决办法
5351
查看次数

带有背景图像的JTextArea的内部填充

我的最终目标是拥有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)

java swing border jtextarea

6
推荐指数
3
解决办法
4209
查看次数