禁用JTextField的边框

时间:2014-03-30 19:00:46

标签: java swing border jtextfield

有没有办法禁用JTextField而不会丢失它的边框?基本上我有几个文本字段,其中一些是启用的,一些是禁用的。然而,残疾人没有边界。无论启用还是禁用,我希望所有文本字段看起来都一样。有什么方法可以做到吗?

感谢您的回答

2 个答案:

答案 0 :(得分:1)

在本程序中,您可以找到解决方案

  import java.awt.*;  
  import java.awt.event.*;  
  import javax.swing.*;  

 public class DressingUpComponents  
{  
   JTextField disabled,  
              normal;  
  JLabel     label;  

public DressingUpComponents()  
{  
    configureDisabledTextField();  
    normal = new JTextField("hello world");  
    configureLabel();  
}  

private void configureDisabledTextField()  
{  
    disabled = new JTextField("hello world");  
    disabled.setEnabled(false);  
    Color bgColor = UIManager.getColor("TextField.background");  
    disabled.setBackground(bgColor);  
    Color fgColor = UIManager.getColor("TextField.foreground");  
    disabled.setDisabledTextColor(fgColor);  
    disabled.setBorder(BorderFactory.createEtchedBorder());  
}  

private void configureLabel()  
{  
    label = new JLabel("hello world");  
    label.setBorder(BorderFactory.createEtchedBorder());  
    label.setOpaque(true);         // required for background colors  
    label.setBackground(UIManager.getColor("TextField.background"));  
    label.setFont(UIManager.getFont("TextField.font"));  
}  

public static void main(String[] args)  
{  
    DressingUpComponents dup = new DressingUpComponents();  
    JFrame f = new JFrame();  
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    Container cp = f.getContentPane();  
    cp.setLayout(new GridBagLayout());  
    GridBagConstraints gbc = new GridBagConstraints();  
    gbc.weighty = 1.0;                 // allow vertical dispersion  
    gbc.gridwidth = GridBagConstraints.REMAINDER;  // single column  
    cp.add(dup.disabled, gbc);  
    cp.add(dup.normal,   gbc);  
    cp.add(dup.label,    gbc);  
    f.setSize(200,200);  
    f.setLocation(200,200);  
    f.setVisible(true);  
}  
}  

答案 1 :(得分:0)

你可以尝试JTextField text = new JTextField; text.setVisible(false);我不确定这会起作用,但尝试不会造成任何损失。