Как обработать введеное значение переменных из разных текстовых блоков - Java
Формулировка задачи:
как работать с переменными которым присваивается значение введенное из разных текстовых полей, если область действия переменных ограничена в своем блоке, а мне нужно собрать введенные значения всех переменных из разных TextField, а потом проделать разные арифметические операции.
Если объявить переменные вне блока то разные арифметические операции происходят с нулями, а не с полученными числами из текстовых полей
double c12 = 0;
double c22 = 0;
double c32 = 0;
// ввод числа 1
JFormattedTextField TextField1 =
new JFormattedTextField(NumberFormat.getIntegerInstance());
TextField1.setColumns(10);
TextField1.setValue(new Integer(0));
Number TextField1 = (Number) TextField1.getValue();
TextField1.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent ea) {
}
public void keyReleased(KeyEvent ea) {
String с11 = TextField1.getText();
double с12 = Double.valueOf(TextField1);
}
public void keyTyped(KeyEvent ea) {
}
});
// ввод числа 2
JFormattedTextField TextField2 =
new JFormattedTextField(NumberFormat.getIntegerInstance());
TextField2.setColumns(10);
TextField2.setValue(new Integer(0));
Number TextField2 = (Number) TextField2.getValue();
TextField2.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent ea) {
}
public void keyReleased(KeyEvent ea) {
String с21 = TextField2.getText();
double с22 = Double.valueOf(TextField2);
}
public void keyTyped(KeyEvent ea) {
}
});
// ввод числа 3
JFormattedTextField TextField3 =
new JFormattedTextField(NumberFormat.getIntegerInstance());
TextField3.setColumns(10);
TextField3.setValue(new Integer(0));
Number TextField2 = (Number) TextField2.getValue();
TextField3.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent ea) {
}
public void keyReleased(KeyEvent ea) {
String с31 = TextField3.getText();
double с32 = Double.valueOf(TextField3);
}
public void keyTyped(KeyEvent ea) {
}
});
double c4 = (с12 + с22) * с33;
Label1.setText("Значение (с12 + с22) * с33 = " +c4);
Это что на java невозможно реализовать? Получить и обработать поток данных из фреймворка, если для консоли есть операторы получающие введенные пользователем данные и дальше с ними можно что угодно делать, то для фреймворка ничего такого я ни в одном учебнике не нашел.
Я тогда не пойму для чего нужна java, чтобы писать архаичные программки для работы в консоли?
Решение задачи: «Как обработать введеное значение переменных из разных текстовых блоков»
textual
Листинг программы
public class Example extends JFrame {
public static String c11; // объявить публично и статично переменную тип String именно с заглавной буквы
public static double c12; // для double не знаю почему можно с маленькой
public static void createGUI() {
JLabel Label1 = new JLabel();
try { // для компиляции и создании jar в eclipse нужен метод try
// я пишу в блокноте и компилирю в консоли у меня работает без try не знаю почему так
// ввод числа 1
JFormattedTextField TextField1 =
new JFormattedTextField(NumberFormat.getIntegerInstance());
TextField1.setColumns(10);
TextField1.setValue(new Integer(0));
Number TextField1 = (Number) TextField1.getValue();
TextField1.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent ea) {
}
public void keyReleased(KeyEvent ea) {
String с11 = TextField1.getText();
// double с12 = Double.valueOf(TextField1); в скобках вместо TextField1 нужно указать переменную с11
// тоже самое в блоках TextField2, TextField3 (с12 с13 )
double с12 = Double.valueOf(с11); // должно быть так, переменная с11 тип String переводится в тип double
}
public void keyTyped(KeyEvent ea) {
}
});
// ввод числа 2
JFormattedTextField TextField2 =
new JFormattedTextField(NumberFormat.getIntegerInstance());
TextField2.setColumns(10);
TextField2.setValue(new Integer(0));
Number TextField2 = (Number) TextField2.getValue();
TextField2.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent ea) {
}
public void keyReleased(KeyEvent ea) {
String с21 = TextField2.getText();
double с22 = Double.valueOf(c21);
/*
в KeyListener TextField2 вставляем переменные которым присвоено значение из блока KeyListener TextField1 :
переменная String с11 которая объявлена глобально и статично в начале класса
переменная double с22 которая объявлена глобально и статично в начале класса
*/
String с11 = TextField1.getText();
double с12 = Double.valueOf(с11);
double c4 = c12 + с22;
/*
Теперь в тот момент когда в поле TextField2 пользователь отпускает клавишу с цифрой
берется значение переменной с12 из текстового поля TextField1
и прибавляется значение переменной c22 введенное в TextField2
на тот случай если пользователь ни чего не ввел в поле TextField1
то благодаря строке TextField1.setValue(new Integer(0)); берется 0
*/
Label1.setText("Значение заработало с12 + с22 = " +c4);
}
public void keyTyped(KeyEvent ea) {
}
});
} catch (NumberFormatException e) {
System.out.println("Неверный формат строки!");
}