2014-03-30 65 views
0

有沒有辦法在不丟失邊界的情況下禁用JTextField?基本上我有幾個文本字段,其中一些是啓用,一些是禁用的。然而,殘疾人沒有邊界。我希望所有文本字段看起來都一樣,無論它們是啓用還是禁用。有沒有辦法如何做到這一點?禁用JTextField的邊界

感謝您的任何答案

+3

你使用任何特殊的外觀和感覺,因爲默認'JTextField'不會禁用該控件時消失。 –

回答

0

你可以嘗試JTextField text = new JTextField; text.setVisible(false);我不知道這會工作,但努力並沒有做任何事情失去了。

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); 
} 
}