Получение значений из JTextField, созданного во время выполнения

1

Я создал небольшую программу, которая может создавать строки и столбцы во время выполнения, для набора наборов математических классов, у меня уже есть программа для создания строк и столбцов, но то, что я хочу сделать дальше, сможет получить значения внутри и затем загрузите другую форму той же структуры и получите значения форм, затем добавьте их и покажите их в окончательной форме. Довольно неожиданно для всей Java-вещи, поэтому, если кто-нибудь мог это помочь, это означало бы мир. Вот что у меня до сих пор..

import java.awt.*;
import java.awt.event.ActionEvent;   
import javax.swing.*;

public class Matrice extends JFrame {

protected static final int PREF_W = 200;
protected static final int PREF_H = 200;
JPanel mainPanel = new JPanel() {
  @Override
  public Dimension getPreferredSize() {
     return new Dimension(PREF_W, PREF_H);
  }
 };

 public JComponent getMainComponent() {
  return mainPanel;
   }

public Matrice(){
int rows, columns, end;

String RI, CI;

RI = JOptionPane.showInputDialog(null, "How many rows: ");
rows = Integer.parseInt(RI);
CI = JOptionPane.showInputDialog(null, "How many columns: ");
columns = Integer.parseInt(CI);
end = rows * columns;

JPanel holder = new JPanel(new GridLayout(rows, columns));
    holder.setVisible(true);
for(int i = 0; i < end; i ++){
holder.add(new JTextField("output"));
}
JPanel set = new JPanel(new GridLayout(1, 0));
JTextField r = new JTextField("rows");
JTextField c = new JTextField("columns");
set.add(r);
set.add(c);
set.add(new JButton("Set"));
mainPanel.add(set, BorderLayout.SOUTH);
mainPanel.add(holder, BorderLayout.NORTH);
}

 private static void createAndShowGui() {
   Matrice test = new Matrice();
   JFrame frame = new JFrame("Matrice");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.getContentPane().add(test.getMainComponent());
   frame.pack();
   frame.setLocationRelativeTo(null);
   frame.setVisible(true);
    }

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        createAndShowGui();
     }
    });
}

    }

неважно, кнопки и предустановленный TextField

Теги:
user-interface
swing
jtextfield

2 ответа

1
Лучший ответ

Простой ответ на ваш вопрос заключается в том, что вам нужно определить массив TextField после получения размера:

TextField[][] inputFields = new TextField[rows][columns];

теперь добавьте TextField s

getContentPane().setLayout(new GridLayout(rows, columns));
for(int i = 0; i < rows; i++){
    for(int j = 0; j < columns; j++){
        inputFields[i][j] = new TextField("output");
        holder.add(inputFields[i][j]);
    }
}

Там могут быть синтаксические ошибки, так как я просто печатаю их здесь.

0

Чтобы получить текст из вызова JTextField.getText() на объекте. поэтому r.getText();

Элегантный способ получить номер из поля - использовать Integer.parseInt(String)

поэтому ваш вызов будет Integer.parseInt(r.getText()). Обратите внимание, что это может вызвать

NumberFormatException, поэтому вам придется поймать исключение и, возможно, перепрограммировать пользователя на ввод допустимого числа.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню