Skip to content
Advertisement

Cannot enable grayed-out (.setEnabled(false)) JtextField or JTextArea

Unfortunately, I cannot turn on .setEnable() for a JTextField, or a JTextField (tried both). It keeps remaining gray, so users cannot type. Please help me out.

Details: taTwo can be either a JTextField or JTextArea but any I try cannot be enabled. It should be disabled for A but should be enabled for B, so if user choose A he/she can NOT enter a value in taTwo field, but if the user choose B he/she can write in taTwo.

The method is the following:

public void btnAddtreeAction() {
    this.btnAddtree.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            
            JPanel dialogPanel = new JPanel();
            dialogPanel.setPreferredSize(new Dimension(60,60));
            
            String[] choices = {"A", "B"};
            JComboBox<String> cb = new JComboBox<String>(choices);
            
            JTextArea taOne = new JTextArea(1,30);
            JTextField taTwo = new JTextField();
            taTwo.setEnabled(false);

            Object[] myObject = {"Options:", cb,
                                "Input first:", taOne,
                                "Input second:", taTwo};
            
            JOptionPane.showConfirmDialog(frame, myObject, "Form", JOptionPane.OK_CANCEL_OPTION);
            
            if (cb.getSelectedItem().toString().equals("A")) {
               //something will happen here
            } else if (cb.getSelectedItem().toString().equals("B")) {
                taTwo.setEnabled(true);
              //something will happen here
            }
        }
    });
}

Advertisement

Answer

In your actionPerformed method, you are creating a new JTextField which you are not adding to your GUI. I presume that you have another variable named taTwo somehere in the code that you did not post. You are not changing that variable inside the actionPerformed method. Try removing this line of your code:

JTextField taTwo = new JTextField();
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement