JTextField: el método setColumns () no funciona para mí

mi problema es que mi JTextField -setColumns (int)

"field1.setColumns (5);"

... no funciona. Supongo que es un problema de administrador de diseño. Sin embargo, estoy aprendiendo de un libro de ejercicios. Los únicos diseños que conozco son flowLayout, borderLayout y gridlayout.

Para explicar este código en resumen, cada vez que "field2" active un Evento de acción (presionando la tecla Intro) "field1" debería cambiar de tamaño.

He colocado un "System.out.println (" ActionEvent detectado ") en el" actionPerformed "para probar que se está activando un evento de acción, por lo que ese no es el problema. Incluso he impreso" field1.getColumn "y muestra el valor correcto modificado de 5, sin embargo ... No solo no está cambiando visiblemente el tamaño en tiempo de ejecución.

En lugar de solucionar el problema, esperaba que alguien pudiera explicar el problema. Un trabajo alternativo no me ayudará a aprender, que es el único propósito de abordar estos ejercicios de libros.

Incase es importante, estoy codificando en netbeans. Gracias de antemano por la ayuda.

public class Exercise13_11 extends JFrame implements ActionListener
{
    private JTextField textField1, textField2;
    private JLabel label1, label2;
    private JRadioButton rButton1, rButton2, rButton3;

    public static void main(String[] args)
    {
        JFrame frame = new Exercise13_11();
        frame.setTitle("Exercise 13.11");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(450, 200);
        frame.setVisible(true);
    }

public Exercise13_11()
{
    // North Panel aligned and filled.
    JPanel northPanel = new JPanel();
    northPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
    northPanel.add(label1 = new JLabel("Text Field"));
    northPanel.add(textField1 = new JTextField(20));
    northPanel.setToolTipText("Demonstrate JTextField");
    getContentPane().add(northPanel, BorderLayout.CENTER);

    // South panel now being filled...
    JPanel southPanel = new JPanel();
        southPanel.setLayout(new FlowLayout());

    JPanel alignmentPanel = new JPanel();
    alignmentPanel.setBorder(
                new javax.swing.border.TitledBorder("Horizontal Alignment"));
    alignmentPanel.add(rButton1 = new JRadioButton("Left"));
    alignmentPanel.add(rButton2 = new JRadioButton("Center"));
    alignmentPanel.add(rButton3 = new JRadioButton("Right"));

    ButtonGroup buttonGroup = new ButtonGroup();
    buttonGroup.add(rButton1);
    buttonGroup.add(rButton2);
    buttonGroup.add(rButton3);

    JPanel columnPanel = new JPanel();
    columnPanel.setBorder(new javax.swing.border.EtchedBorder());
    columnPanel.setLayout(new FlowLayout());
    columnPanel.add(label2 = new JLabel("Column Size"));
    columnPanel.add(textField2 = new JTextField(10));

    southPanel.add(alignmentPanel);
    southPanel.add(columnPanel);
    getContentPane().add(southPanel, BorderLayout.SOUTH);

    textField1.addActionListener(this);
    rButton1.addActionListener(this);
    rButton2.addActionListener(this);
    rButton3.addActionListener(this);        
}

public void actionPerformed(ActionEvent e)
{
    if (e.getSource() == textField1)
    {
        textField1.setColumns(5);
    }
    else if (e.getSource() == rButton1)
            textField1.setHorizontalAlignment(textField1.LEFT);
    else if (e.getSource() == rButton2)
            textField1.setHorizontalAlignment(textField1.CENTER);
    else if (e.getSource() == rButton3)
            textField1.setHorizontalAlignment(textField1.RIGHT);
 }

}

Respuestas a la pregunta(4)

Su respuesta a la pregunta