Swing JTextField如何删除边框?

Mar*_* V. 20 java swing jtextfield

无论如何要删除一个边框JTextField

txt = new JTextField();
txt.setBorder(null);   // <-- this has no effect.
Run Code Online (Sandbox Code Playgroud)

我真的希望它看起来像JLabel- 但我仍然需要它成为一个JTextField因为我希望人们能够突出它.

Bjö*_*örn 60

JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
Run Code Online (Sandbox Code Playgroud)

http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html

将边框设置为"null"时,您实际上是在使用(操作系统的)本机边框样式(如果有的话)的外观.

  • +1提及原因WHY null无法按预期工作 (8认同)
  • 由于非显而易见的原因,这可能会或可能不会取决于上下文.http://stackoverflow.com/questions/2281539/setborder-on-jtextfield-does-not-work-or-does-it然而,这是一个很好的信息,我没有看到任何理由进行低估. (2认同)

Tom*_*ine 17

从你上一个问题的答案中你知道一些PL&F可能会破坏边界.

因此,显而易见的解决方案是覆盖setBorderPL&F正在调用的方法,并放弃更改.

JTextField text = new JTextField() {
    @Override public void setBorder(Border border) {
        // No!
    }
};
Run Code Online (Sandbox Code Playgroud)