| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4676 人关注过本帖
标题:当面板JPanel失去焦点时,怎么重新获得焦点
只看楼主 加入收藏
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:3 
当面板JPanel失去焦点时,怎么重新获得焦点
/*
下面是我写得一个测试的程序,运行后,不点击按钮的情况下,按小写状态下的'w'时,弹出对话框,
但是当点击按钮后,面板上的监听失去了,我想用鼠标监听把焦点设置回来,可是不好使了
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class testjiaodian extends JFrame
{
    JPanel apanel;
    public testjiaodian()
    {
        setSize(100,100);
        apanel=new JPanel();
        apanel.addMouseListener(new MouseHandler());
        apanel.addKeyListener(new keyhandle());        
        apanel.setFocusable(true);        
        apanel.add(new JButton("点我"));
        add(apanel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    private class MouseHandler extends MouseAdapter
    {
        public void mousePressed(MouseEvent event)
        {
            apanel.setFocusable(true);
        }
    }
    private class keyhandle implements KeyListener
    {   
        public void keyPressed(KeyEvent event){}
        public void keyReleased(KeyEvent event){}
        public void keyTyped(KeyEvent event)
        {
            int i;
            char keychar = event.getKeyChar();
            if(keychar == 'w')
            {
                JOptionPane.showMessageDialog(null, "键盘响应", "信息", JOptionPane.DEFAULT_OPTION   );            
            }
        }
    }
    public static void main(String args[])
    {
        new testjiaodian();
    }
};
搜索更多相关主题的帖子: JPanel 面板 焦点 
2010-05-13 16:54
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:20 
下班前,上了下论坛,给你修改了下,不知道是否符合你的要求。下线了
程序代码:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class testjiaodian extends JFrame
{
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    JPanel apanel;
    JButton b;
    public testjiaodian()
    {
        setSize(100,100);
        apanel=new JPanel();
        apanel.addMouseListener(new MouseHandler());
        apanel.addKeyListener(new keyhandle());         
        b =new JButton("点我");
        b.addMouseListener(new MouseHandler());
        apanel.add(b);
        add(apanel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    private class MouseHandler extends MouseAdapter
    {
        public void mousePressed(MouseEvent event)
        {          
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    apanel.requestFocus(true);
                }
            });
        }
    }
    private class keyhandle implements KeyListener
    {   
        public void keyPressed(KeyEvent event){}
        public void keyReleased(KeyEvent event){}
        public void keyTyped(KeyEvent event)
        {
            char keychar = event.getKeyChar();
            if(keychar == 'w')
            {
                JOptionPane.showMessageDialog(null, "键盘响应", "信息", JOptionPane.DEFAULT_OPTION   );           
            }
        }
    }
    public static void main(String args[])
    {
        new testjiaodian();
    }
}

2010-05-13 17:32
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
收藏
得分:0 
回复 2楼 linjx0123
谢谢大侠~ 很好用,我的毕设就靠他了。。
2010-05-13 18:52
xiaoji66
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-10-13
收藏
得分:0 
其实不需要这么麻烦,只要弄一个JTextField或者JTextArea,不要的话大小可以设尽量小,用request方法随时让它获取焦点,绑定监听器就行了
2014-10-13 11:30
快速回复:当面板JPanel失去焦点时,怎么重新获得焦点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018698 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved