提问人:davidalayachew 提问时间:9/15/2023 最后编辑:davidalayachew 更新时间:9/16/2023 访问量:88
将背景更改为半透明颜色时在 JButton 上显示的随机文本 [重复]
Random text showing on JButton when changing background to translucent color [duplicate]
问:
如果我将我的文本更改为半透明颜色(0 < alpha < 1),我的文本会得到不稳定的结果。JButton
JButton
package Paint;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class GUI
{
public GUI()
{
final JFrame frame = new JFrame();
frame.setTitle("Paint");
frame.setLocationByPlatform(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createMainPanel());
frame.pack();
frame.setVisible(true);
// System.out.println(JColorChooser.showDialog(null, "Choose a color", null, true));
}
private static JPanel createMainPanel()
{
final JPanel mainPanel = new JPanel(new BorderLayout());
final JPanel topPanel = GUI.createTopPanel();
mainPanel.add(topPanel, BorderLayout.NORTH);
return mainPanel;
}
private static JPanel createTopPanel()
{
final JPanel topPanel = new JPanel();
topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.LINE_AXIS));
topPanel.add(GUI.createColorChooserPanel());
return topPanel;
}
private static JPanel createColorChooserPanel()
{
final int NUM_ROWS = 3;
final int NUM_COLUMNS = 3;
final String DIALOG_TITLE = "Choose a color";
final java.util.List<Character> KEY_LIST =
java.util.List.of('U', 'I', 'O', 'H', 'J', 'K', 'B', 'N', 'M');
final JPanel colorChooserPanel = new JPanel(new GridLayout(NUM_ROWS, NUM_COLUMNS));
for (int index = 0; index < NUM_ROWS * NUM_COLUMNS; index++)
{
final JButton button = new JButton("" + KEY_LIST.get(index));
button.setFont(button.getFont().deriveFont(20.0f));
button.setOpaque(true);
button
.addActionListener
(
event ->
button
.setBackground
(
JColorChooser
.showDialog
(
button,
DIALOG_TITLE,
button.getBackground(),
true
)
)
);
colorChooserPanel.add(button);
}
return colorChooserPanel;
}
}
单击中心按钮,选择一种颜色,转到 RGB 选项卡,将 alpha 更改为在上述范围内,然后单击确定。然后,将鼠标快速悬停在按钮上。你应该像乱码一样不稳定的结果。
以下是一些不稳定结果的照片。
以前
单击中心按钮,然后选择一种颜色
单击“RGB”选项卡,然后更改 ALPHA 值
单击“确定”,现在 JBUTTON 的背景不稳定
更多
在中心按钮和其他按钮之间移动鼠标似乎会更改中心按钮的文本。
编辑 - 我正在构建 Microsoft Paint 的克隆,这个特定的功能是重新创建以下屏幕截图右上角的颜色选择器。喜欢这个。
我计划使用 JColorChooser.showDialog(Component, String title, Color)
作为用户选择颜色的弹出窗口。但是一旦他们这样做了,我想将该颜色带回他们单击的组件(当前是),以便他们下次可以看到并选择它。JButton
编辑 2 - 如果我设置为 0,会发生什么情况。alpha
选择颜色为 0ALPHA
结果 -- 相同的问题,不同的颜色深浅
答: 暂无答案
评论
setOpaque(false)
paintComponent
AlphaContainer