如何在java窗口中添加半透明显示文本框

我图形界面开发用的是swing,想在所显示的图片下半部分显示一个半透明的文本框,然后在里面显示多行文字,SWING能做到吗?求求大家帮帮我!!!!!!

(图片随便找的,别在意)

就类似于这种,半透明,只显示一部分,不占据整个窗口,在其中显示文字。

 

package sample;

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;

import javax.imageio.*;
import javax.swing.*;

public class TransparentImage2 extends JPanel {
	private BufferedImage backImage, frontImage;
	private float alpha = 1;

	public TransparentImage2() {
		try {
			backImage = ImageIO.read(new File("C:\\1618576427308.png"));

			String text = "中文测试";
			BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
			Graphics2D graphics2d = image.createGraphics();
			Font font = new Font("TimesNewRoman", Font.BOLD, 24);
			graphics2d.setFont(font);
			FontMetrics fontmetrics = graphics2d.getFontMetrics();
			int width = fontmetrics.stringWidth(text);
			int height = fontmetrics.getHeight();
			graphics2d.dispose();

			image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
			graphics2d = image.createGraphics();
			graphics2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
					RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
			graphics2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
			graphics2d.setFont(font);
			fontmetrics = graphics2d.getFontMetrics();
			graphics2d.setColor(Color.BLACK);
			graphics2d.drawString(text, 0, fontmetrics.getAscent());
			graphics2d.dispose();

			frontImage = image;

		} catch (Exception e) {
			System.out.println(e);
		}
	}

	@Override
	public Dimension getPreferredSize() {
		return new Dimension(backImage.getWidth(), backImage.getHeight());
	}

	public void setAlpha(float alpha) {
		this.alpha = alpha;
		repaint();
	}

	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);

		Graphics2D g2 = (Graphics2D) g;
		int x = (getWidth() - backImage.getWidth()) / 2;
		int y = (getHeight() - backImage.getHeight()) / 2;
		g2.drawRenderedImage(backImage, AffineTransform.getTranslateInstance(x, y));

		Composite old = g2.getComposite();
		g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
		x = (getWidth() - frontImage.getWidth()) / 10;
		y = (getHeight() - frontImage.getHeight()) / 10;
		g2.drawRenderedImage(frontImage, AffineTransform.getTranslateInstance(x, y));
		g2.setComposite(old);
	}

	private static void createAndShowUI() {
		final TransparentImage2 app = new TransparentImage2();
		app.setAlpha(0.3f);

		JFrame frame = new JFrame("Transparent Image");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.add(app);

		frame.setLocationByPlatform(true);
		frame.pack();
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				createAndShowUI();
			}
		});
	}
}