java - 是否可以在 ImageIcon 中保持透明背景?

标签 java image swing transparency imageicon

我正在用 Java 下国际象棋,我有一个带有黑白 JButton 方 block 的棋盘。所以基本上我的代码是这样的:

JButton[][] board = new JButton[8][8];
JPanel boardPanel = new JPanel();
boardPanel.setLayout(new GridLayout(8, 8));
for (row = 0; row < 8; row++) {
    for (col = 0; col < 8; col++) {
        board[row][col] = new JButton("");
        board[row][col].setBackground(new Color(70, 70, 70));
        boardPanel.add(board[row][col]);
    }
}

按钮上有相应的棋子。我用透明背景创建它们,这样它们就会显示在黑色或白色方 block 上。当我将它们添加到按钮时,透明度会消失,但 .jpg 和 .png 格式除外。我怎样才能解决这个问题?每个图像均采用以下格式:

ImageIcon whitePawn = new ImageIcon("whitePawn.jpg");

谢谢!

最佳答案

JPG 不支持透明度。您可以使用适当的 PNG 文件。

不过还有一些替代方法:

  1. 您可以为每个部分创建 2 个图像,例如whitePawnInWhiteCell.jpg 和whitePawnInBlackCell.jpg 并使用它们。

  2. 您可以为每个部分定义形状,并在单元格上绘制图像之前应用适当的剪辑。

关于java - 是否可以在 ImageIcon 中保持透明背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978781/

相关文章:

c# - 使用 wpf 存储在外部 dll 中的引用图像

ruby - 使用 RMagick 合成处理过的图像

java - 使用 HashMap 存储实例变量?

java - 如何刷新数据表以从数据库中检索新列表

java - 我应该使用哪种设计模式?

Java - Swing GUI 未加载

java - 两个JTable共用滚动条

java - GAE : About the "api" property in target "enhance_war"

java - 写入 16 位 BufferedImage TYPE_USHORT_GRAY

java - 从Java中的组合框获取int值