Estou com um probleminha, e gostaria de saber se alguém tem uma solução para ele. O negócio é o seguinte:
Tenho uma série de TextFields (AWT), e preciso que ele apareçam em função de um número digitado em um outro TextField pelo usuário. Por exemplo: Em um campo o usuário digita no número de operações desejadas, 5, por exemplo. Após digitar o número 5, deverão aparecer 5 TextFields abaixo. O problema é que existem 50 campos (o número máximo de operações). Existe alguma forma de alterar a propriedade visible de uma série de componentes à partir de uma estrutura de controle? Alguém pode me dar uma luz?
Obs: O código deve estar em Java 1.1.4!
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Tela extends JFrame
{
private JTextField fields[];
private JButton button;
private GridLayout layout;
public Tela()
{
super( " Tela " );
layout = new GridLayout( 5 ,2 ,4 ,4);
Container container = getContentPane();
container.setLayout( layout );
fields = new JTextField[10];
for (int i = 0; i < fields.length; i++)
{
fields[ i ] = new JTextField( 10 );
container.add( fields [ i ] );
}
for (int i = 1; i < fields.length; i++)
{
fields[ i ].setVisible( false );
}
TrataEvento evento = new TrataEvento();
fields[0].addActionListener( evento );
setVisible( true );
setSize( 400,200 );
}
private class TrataEvento implements ActionListener
{
public void actionPerformed( ActionEvent event )
{
if( event.getSource() == fields[ 0 ])
{
int numFieds = Integer.parseInt( fields[0].getText());
for (int i = 1; i < numFieds; i++)
{
fields[ i ].setVisible( true );
}
}
}
}
}
import javax.swing.JFrame;
public class Testa
{
public static void main(String[] args)
{
Tela tela = new Tela();
tela.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
Acho que é mais ou mesmo isso se não está bem proximo !!
Acho que era isso mesmo que eu estava querendo. Não sei porque, mas estava crente que deveria ser usado um arrayList. De qualquer maneira, essa classe só foi implementada a partir da versão 1.2.
Agora surgiu outra dúvida: Como faço para implementar no Netbeans um array de Label, por exemplo? O negócio é que aquela sessão das declarações de variáveis (gráficas) fica travado para edição manual. Dá pra declarar lá no início da classe, e inicializar no pre-init de algum outro componente, mas acho que é gambiarra demais, não é?