我有N列的文本框,希望按下回车后能和这列的save按钮绑定,请问怎么实现
GUI部分代码:
public Test() {
int i;
JPanel[] p=new JPanel[AddressBook.getCount()];
JButton[] jbtsave=new JButton[AddressBook.getCount()];;
JButton[] jbtDelete=new JButton[AddressBook.getCount()];
final JTextField[] name = new JTextField[AddressBook.getCount()];
final JTextField[] sex = new JTextField[AddressBook.getCount()];
final JTextField[] age = new JTextField[AddressBook.getCount()];
for(i=0;i<AddressBook.getCount();i++){
p[i] = new JPanel();
jbtsave[i] = new JButton("Save");
jbtDelete[i] = new JButton("Delete");
name[i]= new JTextField(10);
sex[i]= new JTextField(1);
age[i]= new JTextField(3);
p[i].setLayout(new GridLayout(1, 5, 10, 10));
getRootPane().setDefaultButton(jbtsave[i]);
p[i].add(name[i]);
name[i].requestFocus();
p[i].add(sex[i]);
sex[i].requestFocus();
p[i].add(age[i]);
age[i].requestFocus();
p[i].add(jbtsave[i]);
p[i].add(jbtDelete[i]);
final String str = "The button for "+i;
jbtsave[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,str,"Alert",JOptionPane.INFORMATION_MESSAGE);
}
});
}
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(AddressBook.getCount(), 1, 10, 10));
for(i=0;i<AddressBook.getCount();i++)
p1.add(p[i]);
add(p1);
    }

解决方案 »

  1.   

    给文本框添加KeyListener
    当释放回车键时调用save的点击事件import java.awt.event.*;
    import javax.swing.*;
    public class Demo extends JFrame {
    private JPanel jp = new JPanel();
    private JTextField jt = new JTextField(20);
    private JButton jb = new JButton("save");

    public Demo(){
    jp.add(jt);
    jp.add(jb);
    this.add(jp);
    MyListener myListener = new MyListener();
    jt.addKeyListener(myListener);
    jb.addMouseListener(myListener);
    this.setBounds(400,300,400,300);
    this.setVisible(true);
    }

    public static void main(String[] args){
    new Demo();
    }

    class MyListener extends MouseAdapter implements KeyListener {
    @Override
    public void mouseClicked(MouseEvent e){
    EnterOnclick();
    }
    public void keyTyped(KeyEvent e){
    }
    public void keyPressed(KeyEvent e){
    }
    public void keyReleased(KeyEvent e){
    if(e.getKeyCode() == 10)
    EnterOnclick();
    }
    private void EnterOnclick(){
    System.out.println("enter pressed ");
    }
    }
    }
      

  2.   

    楼上说的对,按钮的监听已经写好的话就能直接调用,有个方法叫做gettext()。