Предположим, у меня есть JDialog с 3 текстовыми полями First, Last и LastFirst. Когда LastFirstreceives фокусируется, он должен быть установлен как конкатенация первого & последним, но только если первые & последние не пустые. Вот уместный код из моего примера, который не работает: Что мне не хватает?Поле настройки на основе подтвержденных других полей
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JOptionPane;
public class FieldValidatedSetting extends javax.swing.JFrame {
private javax.swing.JTextField txtFirst;
private javax.swing.JTextField txtLast;
private javax.swing.JTextField txtLastFirst;
//
//This is supposed to concatenate Last & First and set LastFirst.
// Empty First or Last fields should result in a message dialog
// and return for user correction. Problem is it issues the message twice!
// Please excuse the crummy layout./
// Constructor
private void txtLastFirstFocusGained(java.awt.event.FocusEvent evt)
if(txtLast.getText().isEmpty() || txtFirst.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "You must enter First & Last");
txtFirst.requestFocusInWindow();
} else{
txtLastFirst.setText(txtLast.getText() + txtFirst.getText());
}
}
public FieldValidatedSetting() {
txtFirst = new javax.swing.JTextField();
txtLast = new javax.swing.JTextField();
txtLastFirst = new javax.swing.JTextField();
txtLastFirst.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
txtLastFirstFocusGained(evt);
}
});
Container pane = getContentPane();
pane.setLayout(new GridLayout(1, 3));
pane.add(txtFirst);
pane.add(txtLast);
pane.add(txtLastFirst);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FieldValidatedSetting().setVisible(true);
}
});
}
}
'' Что мне не хватает? "- это очень помогло бы, если бы вы создали и опубликовали действительную [mcve], небольшую, но полную программу, которая имеет только необходимый код, чтобы продемонстрировать вашу проблему, которую мы можем скопировать, вставить , скомпилировать и запустить без изменений, поскольку это поможет нам полностью понять, что вы можете делать неправильно. Обратите внимание, что это код, отправленный как текст в формате кода, а не как ссылка на ресурс вне сайта. –
Возможно использовать «FocusListener» и «PropertyChangeListener» для [example] (http://stackoverflow.com/a/8703807/230513). – trashgod