如何解决Java Swing中LoginNameText颜色透明度设置无效问题?
解决Java Swing JLabel透明度不生效的问题
你的代码有两个关键问题导致透明度效果没出来,修正后就能匹配Figma的设计:
Alpha值计算优先级错误
原代码里(int) 0.59*255会先把0.59强制转换为int(结果是0),再乘以255,最终alpha值为0,文字直接变成完全透明。必须给乘法运算加括号,保证先计算浮点乘法再转int:int alpha = (int) (0.59 * 255); // 正确结果是150JLabel的不透明属性阻碍透明效果
JLabel默认opaque属性为true,这会让组件用背景色填充整个区域,覆盖前景色的透明效果。需要手动设置为false:LoginNameText.setOpaque(false);
另外注意字体名写错了,"Arials"应该是"Arial",否则会 fallback 到系统默认字体,和Figma设计的字体不一致。
修正后的完整代码:
int alpha = (int) (0.59 * 255); JLabel LoginNameText = new JLabel(); LoginNameText.setBounds(0, 170, 500, 100); LoginNameText.setText("Name"); LoginNameText.setFont(new Font("Arial", Font.BOLD, 30)); LoginNameText.setHorizontalAlignment(JLabel.CENTER); LoginNameText.setForeground(new Color(30, 30, 30, alpha)); LoginNameText.setOpaque(false);
内容的提问来源于stack exchange,提问作者cihan toker
相关产品推荐
相关产品推荐

