假设我有一个Jtextfields数组(例如JTextfield [10])。我把它们添加到框架中。现在,用户在文本字段中随机输入文本,例如用户首先在索引5的文本字段中输入,然后是9然后是2,依此类推。不一定填写所有文本字段。
我的问题是如何获取文本字段的索引并同时打印索引作为用户输入文本意味着如果用户在索引为5的文本字段中输入我应该能够获得索引5然后如果是texfield填充索引9,打印9,依此类推。
答案 0 :(得分:0)
将FocusListener
添加到数组中的每个JTextField
,即可实现目标。看看这样的东西,
import javax.swing.*;
import java.awt.event.*;
class indexTest extends JFrame {
public indexTest() {
super();
initComponents();
}
private void initComponents() {
setSize(400, 250); // setting frame size
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JTextField();
JTextField jTextField3 = new JTextField();
JTextField jTextField4 = new JTextField();
JTextField jTextField5 = new JTextField();
TextFocusListener focusListener = new TextFocusListener();
jTextField1.addFocusListener(focusListener);
jTextField2.addFocusListener(focusListener);
jTextField3.addFocusListener(focusListener);
jTextField4.addFocusListener(focusListener);
jTextField5.addFocusListener(focusListener);
JTextField jTextField[] = new JTextField[]{jTextField1, jTextField2, jTextField3, jTextField4, jTextField5};
int posY = 10;
for (int i = 0; i < jTextField.length; i++) {
JTextField textField = jTextField[i];
textField.setName("textField " + i);
textField.setBounds(10, posY, 100, 15);
getContentPane().add(textField);
posY += 20;
}
}
}
class TextFocusListener implements FocusListener {
@Override
public void focusGained(FocusEvent e) {
System.out.println(((JTextField) e.getSource()).getName());
}
@Override
public void focusLost(FocusEvent e) {
//todo your user logic goes here // Ex: check user actually entered value or not
}
}
class RunFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
indexTest indexTest = new indexTest();
indexTest.setVisible(true);
});
}
}