Я работаю над небольшим проектом (с Java Builder Builder NetBeans), в котором у меня есть 100 TextFields, который делает то же самое по разным данным. Они расположены в 10 строк и 10 столбцов, там (Переменные) имена подобны:Java Swing, 100 TextFields имеют схожую задачу, поэтому я хочу написать одну функцию для этого
txt11, txt12, ... txt110
txt21, txt22, ... txt210
. . ... .
txt101, txt102, ... txt1010
так, что имена могут легко генерируются с помощью строки и столбца, а также можно легко извлечь строка и столбец TextField, к которым он принадлежит (но я не могу).
Поскольку они выполняют аналогичную задачу я могу написать один метод, который принимаетстроки и Col в качестве аргументов и получить выполняется всякий раз, когда пользователь пишет что-то в любом из TextField. Чтобы выполнить эту задачу, я должен выяснить строку и столбец, к которым они принадлежат.
Я пытался использовать следующий код внутри обработчика событий (я добавил же слушателя событий для всех JTextField):
private void TextFieldAnswerTyped(java.awt.event.KeyEvent evt) {
String name = ((JTextField)evt.getSource()).getName();
int row,col;
if(name.endsWith("10"))
{
col=10;
name=name.substring(0, name.length()-2);
}
else
{
col=Integer.parseInt(name.substring(name.length()-1,name.length()));
name=name.substring(0, name.length()-1);
}
if(name.endsWith("10"))
row=10;
else
row=Integer.parseInt(name.substring(name.length()-1,name.length()));
checkForCell(row, col); //Performs the task
}
Everytime событие встречается, это дает мне null
как name
. Я делаю какую-либо ошибку здесь или есть хорошая альтернатива.
Вы смотрите на ненужную работу для себя. Почему бы не объединить все это и просто использовать JTable? –
Возможно, вы путаете поле имени, которое получается путем вызова 'getName()', с именем переменной, что-то совершенно другое. Если вы не можете использовать JTable (опять моя основная рекомендация), тогда поместите все ваши JTextFields в двумерный массив и выполните итерацию по массиву, чтобы получить позицию столбца и строки. –
Любой дизайн (программное обеспечение, а также пользовательский интерфейс), который требует от вас (или ваших пользователей) работы со 100 текстовыми полями, просто: ** сломан **. Сделайте так, как предлагает судно на воздушной подушке; и A) рассмотреть возможность использования другого компонента пользовательского интерфейса и B) узнать о массивах или что-то еще. Именование переменных a1, a2, ... и т. Д .; а затем использовать имя, чтобы сделать отражение назад, чтобы идентифицировать что-то ... действительно очень плохая идея. Серьезно: так происходит «кошмары обслуживания». – GhostCat