【问题标题】:Java JButton text and focus displaying incorrectly, overlappingJava JButton 文本和焦点显示不正确,重叠
【发布时间】:2016-02-02 01:47:16
【问题描述】:

我用 JButtons 创建了一个简单的摇摆 GUI。当我启动 GUI 时,this is what it looks like

如果我点击每个按钮一次,it looks like this.

如何删除每个按钮上的幻像文本,以及如何删除已单击按钮上的深灰色焦点? 下面是我的按钮类

package gui;

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JPanel;

public class MenuButton extends JButton{

private static final long serialVersionUID = 1L;

     public MenuButton(String text, JPanel container){
        setPreferredSize(new Dimension((int)(container.getSize().width),50));
        setBackground(new Color(168, 228, 247, 0));
        setForeground(Color.WHITE);
        setText(text);
        setOpaque(false);
        setFocusPainted(false);
        setBorderPainted(false);
        setRolloverEnabled(false);
        setContentAreaFilled(false);
    }

    public void addTo(JPanel container){
        container.add(this);
    }
}

我在 main 中创建了一个“MenuButton”的新实例,并将其添加到我的 Jpanel 中,称为 JMenu,但没有做任何进一步的事情。所以它现在应该做的就是显示一个带有适当文本的 JButton,并且没有所有的悬停/单击/鼠标悬停突出显示效果。

【问题讨论】:

  • 我们可能需要父 JPanel,但我不确定您为什么将 opaque 设置为 false。

标签: java swing text duplicates jbutton


【解决方案1】:
setBackground(new Color(168, 228, 247, 0));
setOpaque(false);

您有冲突的参数。您是说按钮是透明的(因此您不希望绘制背景),但您尝试为其赋予具有 alpha 值的背景颜色。

使用其中一种,但不能同时使用。

如果您确实决定想要具有 alpha 值的背景,那么您将遇到绘画问题。查看Backgrounds With Transparency 了解问题的解释和一些解决方案。

【讨论】:

  • 谢谢,这解决了重叠文本问题。你知道为什么第一个 Jbutton 在启动时突出显示,而另一个在按下后突出显示吗?
  • 使用'setFocusable(false);'从第一个 JButton 中删除了突出显示,但单击时它们仍然永久突出显示...
猜你喜欢
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2015-05-17
  • 1970-01-01
  • 2019-10-20
相关资源
最近更新 更多