有没有办法在 JTextField
中去掉边框?
txt = new JTextField();
txt.setBorder(null); // <-- this has no effect.
我希望它看起来像一个JLabel
- 但我仍然需要它是一个JTextField
,因为我希望人们能够突出显示它。
有没有办法在 JTextField
中去掉边框?
txt = new JTextField();
txt.setBorder(null); // <-- this has no effect.
我希望它看起来像一个JLabel
- 但我仍然需要它是一个JTextField
,因为我希望人们能够突出显示它。
JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html
将边框设置为“null”时,实际上是告诉外观(look & feel)如果有本地边框样式(操作系统的),则使用它。
根据你之前的一个问题的答案,你知道一些PL&F可能会覆盖边框。
显而易见的解决方案是覆盖PL&F正在调用的setBorder
方法,并丢弃更改。
JTextField text = new JTextField() {
@Override public void setBorder(Border border) {
// No!
}
};
setBorder(null)
是不可靠的(即当您自己测试时它可以工作,但在现场可能无法工作,或者在您转向其他事情后的某个随机时间停止工作)。 - Tom Hawtin - tackline不,您不能去掉边框。特别是在AWT组件的显示上。它们使用本机部件集(在Java之外绘制)。
试着让这条线与您的背景相似...例如,如果您的背景是白色,则必须:
setBorder(BorderFactory.createLineBorder(Color.white));
setBackground(Color.white);
尝试将其设置为BorderFactory.createEmptyBorder(),而不是null。有时这样做可以"解决问题",因为将其设置为null实际上具有不同的含义。
如果这样做没有效果,那么可能是您正在使用的外观覆盖了某些内容。您是使用默认设置还是自定义设置?
txt.setBorder(new LineBorder(Color.BLACK,0));
你可以简单地
textField.setBorder(null);
或者
textField.setBorder(new EmptyBorder(0, 0, 0, 0))
setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));
setBorder (BorderFactory.createLineBorder (getBackground (), 2));
但是你将在所有四个方向上以2个像素的大小获得视野范围更大的区域。如果您不指定边框厚度,您将看到光标在此边框和剩余区域之间永远存在。