Java的代码如何实现不手动按Enter键,自动执行按Enter键的效果

解决方案 »

  1.   

    你想做什么?  想绘制Enter按下去的效果,还是执行Enter按下时调用的方法
      

  2.   

    我是想绘制Enter按下去的效果,不要用手去按Enter键
      

  3.   

    button.getModel().setPressed(true);
    button.getModel().setArmed(true);
    不过你操作完成之后要调用上面的方法:
    button.getModel().setPressed(false);
    button.getModel().setArmed(false);
      

  4.   

    我这样写好象不行,JButton触发不了Enter键,请大侠帮忙看一下:package gui;
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class AutoEnter extends JFrame implements ActionListener,KeyListener{
    JPanel panel=new JPanel();
    JButton  bohao = new JButton("拨号");
    private static int k;
    public AutoEnter(){
    panel.setLayout(new BorderLayout());
    panel.add(bohao,BorderLayout.SOUTH); 
    bohao.addActionListener(this); 
    add(panel);
    setSize(new Dimension(400, 400));
    show();
    }

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

    public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("拨号")){ 
    System.out.println("开始拨号");
    k=0;
    for(int i=0;i<10000;i++){
    k++;
    try {
    Thread.sleep(2000);
    } catch (InterruptedException ex) {
    ex.printStackTrace();
    }
    bohao.getModel().setPressed(true); 
    bohao.getModel().setArmed(true); 
    }
    }
    } public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    if(e.getKeyCode() == KeyEvent.VK_K){
    System.out.println("第 "+k+" 次按Enter键");
    }
    bohao.getModel().setPressed(false); 
    bohao.getModel().setArmed(false);
    } public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub

    } public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub

    }
    }
      

  5.   


    你这么写会阻塞事件派发线程的,界面绘制没有办法实现。 public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("拨号")) {
    new Thread(new Runnable(){
    public void run(){
    System.out.println("开始拨号");
    k = 0;
    for (int i = 0; i < 10000; i++) {
    k++;
    try {
    new Thread(){
    public void run(){
    bohao.getModel().setPressed(true);
    bohao.getModel().setArmed(true);
    try {
    Thread.sleep(100);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    bohao.getModel().setPressed(false);
    bohao.getModel().setArmed(false);
    }
    }.start();
    Thread.sleep(1000);
    } catch (InterruptedException ex) {
    ex.printStackTrace();
    }
    }
    }
    }).start();
    }
    }
      

  6.   

    楼上多谢了,虽然没有实现自动重复按键盘上的Enter键,但可以实现java按钮的重复点击已经很好了,加分
      

  7.   

    最后我还想问一下可不可以把键盘上的Enter键也实例化成一个对象,同样使用
    button.getModel().setPressed(true); 
    button.getModel().setArmed(true);  
    button.getModel().setPressed(false); 
    button.getModel().setArmed(false);
    的方法不过 button 变成了 键盘上的Enter键的实例化对象,
    可是键盘上的Enter键怎样实例化啊