哪些摆动容器可以设定为可调焦?

时间:2012-06-14 12:45:34

标签: java swing focus jpanel

我正在使用JPanel添加JComponents,我尝试将JPanel设置为可焦点,因此当用户点击JPanel时,它会取消选中JComponent并称呼JComponent的听众。我已经阅读了几乎每一个Q& A问到这一点,我找不到任何有用的东西。所以我想:还有另一个我可以使用的容器吗?

2 个答案:

答案 0 :(得分:2)

你试过panel.requestFocus();吗?由于JPanelComponent的子类,因此它也可以调用此方法。这将关注特定时刻的任何内容。

修改

这是一个代码示例,显示它正常工作。

import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class PanelOnClickGrabFocus {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                final JPanel p = new JPanel();
                p.setPreferredSize(new Dimension(400, 400));
                JTextField tf = new JTextField(34);
                p.add(tf);
                f.setContentPane(p);
                f.pack();
                f.setVisible(true);
                p.addMouseListener(new MouseAdapter() {    
                    @Override
                    public void mousePressed(MouseEvent e) {
                        p.requestFocus();
                    }
                });
            }
        });
    }
}

答案 1 :(得分:1)

我想你可以使用任何实现FocusListener接口的容器。创建自己的或使用文档中描述的已知实现的接口。 http://docs.oracle.com/javase/6/docs/api/java/awt/event/FocusListener.html