JButton的不透明度/半透明度?

3

我有如下简单的GUI代码,我想让JButton变成半透明,这样就可以看到JButton后面的图片了!

package dealORnodeal;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Deal extends JFrame implements ActionListener
{
private Container contentPane = getContentPane();
private JButton one = new JButton("1"),two = new JButton("2");
private JMenu menu1 = new JMenu("JumpTo");
private JMenuBar bar1 = new JMenuBar();
private ImagePanel bg = new ImagePanel(new ImageIcon("bg.jpg").getImage());
public Deal()
{

    super("Deal Or No Deal");
    setSize(800,850);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);
    setLayout(null);
    contentPane.add(bg);

    JMenuItem item1;

    item1 = new JMenuItem("Start Game");
    item1.addActionListener(this);
    menu1.add(item1);

    item1 = new JMenuItem("GoTo Rules");
    item1.addActionListener(this);
    menu1.add(item1);

    item1 = new JMenuItem("GoTo Credits");
    item1.addActionListener(this);
    menu1.add(item1);

    item1 = new JMenuItem("GoTo Menu");
    item1.addActionListener(this);

    menu1.add(item1);
    bar1.add(menu1);
    setJMenuBar(bar1);

    //GAME CODE
    one.setBounds(25,151,190,49);
    one.addActionListener(this);

    add(one);
    //GAME CODE END

setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e) 
{}
}

如果我想将按钮设置为半透明,这样背景图像就可以通过按钮显示出来,那么代码应该怎么写呢?顺便说一下,请不要混淆半透明和透明!


1
我认为这个链接可以帮助你:https://dev59.com/41vUa4cB1Zd3GeqPqiRa - hmatar
2
为了更快地获得帮助,请发布一个SSCCE(添加一个main(String]),包括ImagePanel并在代码中创建一个图像)。 - Andrew Thompson
1
为避免混淆,为什么不明确说明半透明和透明之间的区别呢? - Vincent Ramdhanie
2
看看这个例子半透明JButton,不确定这是否是你想要的!! - nIcE cOw
1
永远不要使用空布局(即 null layout) - 这是适当的布局管理器的专属任务。请勿手动调整大小或定位。 - kleopatra
显示剩余3条评论
2个回答

1
我无法在您的问题下发表评论,所以我会在这里回答您。

如果您使用此代码:

myButton.setOpaque(false);

它不会绘制按钮 - 因为现在它是透明的。 要创建半透明按钮,我认为您应该覆盖按钮绘制方法。

看一下这个线程


1

setOpaque 方法不能用于 JButtons,正确的属性是:

button.setContentAreaFilled(false);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接