Java GUI Criação de Componentes
-
21-08-2019 - |
Pergunta
Eu espero que seja termo correto-sábio para dizer que os componentes em uma GUI é como JButton, JPanel, JTextField, todas essas coisas boas.
Eu quero criar um campo de texto que leva em um número inteiro.Em seguida, um botão de envio pode ser pressionado e com base na inteiro que foi introduzido, criar os textfields em uma janela pop-up ou o que seja.
Eu não tenho nenhuma idéia, alguém poderia me começar na direção certa?
Os problemas que eu estou tendo é que eu não tenho nenhuma idéia de como criar um loop for para criar os componentes da GUI.Quero dizer, se eu tenho um loop for e fazer algo como:
print("JTextField num1 = new JTextField()");
em seguida, em um loop for só vai criar 1 campo de texto quando eu quero muitos.Como faço genericamente criar variáveis de JTextFields?
Obrigado por sua ajuda...
Solução
Uso adequado LayoutManager (e.g.GridLayout) para criar e adicionar o seu textfields.
for (i = 0; i < numberOfTextFields; i++) {
JTextField textField = new JTextField();
container.add(textField);
/* also store textField somewhere else. */
}
Outras dicas
Tente algo como isso:
List<JTextField> nums = new ArrayList<JTextField>();
JTextField tempField;
for (int i = 0; i < 10; i++) {
tempField = new JTextField();
jPanel1.add(tempField); // Assuming all JTextFields are on a JPanel
nums.add(tempField);
}
Não se esqueça de definir um bom layout manager para o recipiente.(jPanel1 neste caso)
Gostaria de criar uma Lista para armazenar os campos de texto e, em seguida, você pode obtê-los de volta pelo índice.Em seguida, você pode ter quantos campos você precisa.
List fields = new ArrayList();
// Create as many elements as you need
for (int i = 0; i < numberOfElements; i++){
JTextField field = new JTextField();
// Add the fields to some panel so they are shown in the screen.
// I assume that the component is called parent panel
parentPanel.add(field);
// Store the component in the list so you can retrieve it later
fields.add(field);
}
// ...
// When you want to retrieve a particular one:
JTextField field = (JTextField)fields.get( indexToRetrieve );