我正在登录服务器&当我将不透明设置为JTextFields
时,我的false
不透明。
我的代码:
//username
JTextField jUsername = new JTextField(10);
jUsername.setBounds(520, 284, 190, 25);
jUsername.setOpaque(false);
jUsername.setBorder(null);
getContentPane().add(jUsername);
//password
JTextField jPassword = new JTextField(15);
jPassword.setBounds(520, 374, 190, 25);
jPassword.setOpaque(false);
jPassword.setBorder(null);
//jPassword.setBackground(new Color(Color.TRANSLUCENT));
getContentPane().add(jPassword);
图像仍在发生的事情:
以前见过这个或者知道如何解决这个问题的人?我环顾四周,但没有人遇到和我一样的问题。他们的修复对我来说不起作用。 (我知道我没有使用JPasswordField
来获取密码,这是暂时的)
答案 0 :(得分:3)
基本上,无论不透明设置如何,文本字段的UI委托不仅会绘制文本,还会绘制字段区域(在边框内)。
您可以做的是将背景颜色设置为透明值,例如new Color(0, 0, 0, 0)
,这是完全透明的。
例如......
JTextField jUsername = new JTextField(10);
jUsername.setBounds(520, 284, 190, 25);
jUsername.setBackground(new Color(0, 0, 0, 0));
jUsername.setOpaque(false);
jUsername.setBorder(null);
getContentPane().add(jUsername);
//password
JTextField jPassword = new JTextField(15);
jPassword.setBounds(520, 374, 190, 25);
jPassword.setBackground(new Color(0, 0, 0, 0));
jPassword.setOpaque(false);
jPassword.setBorder(null);
//jPassword.setBackground(new Color(Color.TRANSLUCENT));
getContentPane().add(jPassword);
您可以通过更改最后一个参数来影响颜色的透明度,例如new Color(255, 255, 255, 128)
会变白,50%透明......
您可能还希望更改插入符号颜色,请查看JTextComponent#setCaretColor
以获取更多详细信息
答案 1 :(得分:3)
不知道你尝试了什么,为了更好地帮助发布SSCCE,请简短。 runnable,可编译setBackground而不是Image
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class LabelImageText extends JPanel {
private static final long serialVersionUID = 1L;
public LabelImageText() {
JTextField jUsername = new JTextField(10);
jUsername.setText("MyText");
jUsername.setOpaque(false);
//jUsername.setBorder(null);
add(jUsername);
JTextField jPassword = new JTextField(15);
jPassword.setText("MyText");
jPassword.setOpaque(false);
//jPassword.setBorder(null);
add(jPassword);
setBackground(Color.RED);
}
private static void createAndShowUI() {
JFrame frame = new JFrame("set Opaque");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new LabelImageText());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowUI();
}
});
}
}
答案 2 :(得分:0)
我尝试了另一个选项,它对我有用。
您可以修改Background
的属性textfield
。在选择框中选择选项自定义代码,然后将new Color(0, 0, 0, 0)
粘贴到txtField.setBackground
属性中。
然后只需将border属性更改为No border
。最后取消选中opaque
复选框。