有没有删除JTextField
中的边框?
txt = new JTextField();
txt.setBorder(null); // <-- this has no effect.
我真的希望它看起来像JLabel
- 但我仍然需要它成为JTextField
,因为我希望人们能够突出它。
答案 0 :(得分:60)
JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html
将边框设置为“null”时,您实际上是在告诉外观&amp;感觉使用(操作系统的)本机边框样式(如果有)。
答案 1 :(得分:17)
从您之前的question的答案中,您知道某些PL&amp; Fs可能会破坏边界。
显而易见的解决方案是覆盖PL&amp; F正在调用的setBorder
方法,并放弃更改。
JTextField text = new JTextField() {
@Override public void setBorder(Border border) {
// No!
}
};
答案 2 :(得分:3)
尝试将其设置为 BorderFactory.createEmptyBorder() 而不是null。有时这种“诀窍”因为将其设置为null实际上具有不同的含义。
如果这不起作用,您使用的外观可能会覆盖某些内容。您使用的是默认设置还是自定义设置?
答案 3 :(得分:2)
不,你不能删除边框。特别是在AWT组件的显示屏上。它们使用本机窗口小部件集(在Java外部绘制)。
尝试制作与您的背景相似的行...例如,如果您的背景为白色,那么您必须:
setBorder(BorderFactory.createLineBorder(Color.white));
然后将背景设置为白色:
setBackground(Color.white);
答案 4 :(得分:1)
txt.setBorder(new LineBorder(Color.BLACK,0));
可能有用。
答案 5 :(得分:0)
你可以简单地
textField.setBorder(null);
或
textField.setBorder(new EmptyBorder(0, 0, 0, 0))
答案 6 :(得分:-1)
使其适用于所有情况的唯一方法是以下设置:
setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));
否则(当您拥有父容器的空背景时),您将看到“I”光标永远保留在JTextField的左边缘。 (只需对不同的边框厚度进行一些测试,并观察JTextField在第一次激活时放置光标的非常奇怪的方式。)
或者您可以设置:
setBorder (BorderFactory.createLineBorder (getBackground (), 2));
但是你会在所有四个方向上获得大于2像素的视场。如果未指定边框粗细,则会看到光标BETWEEN此边框和字段永久保留。