Java 如何知道当前使用的是哪个顶部容器;聚焦;根据重点控制?
我有一个应用程序,它显示一个JFrame,其中有几个JPanel(a)。每个JPanel A中都有一些控件,还有一些复杂的组件包含额外的控件。现在,我的应用程序需要知道JPanel a所包含的一组控件中的哪一个正在被使用,这样它就可以突出显示JPanel a 以下是一些代码作为示例:Java 如何知道当前使用的是哪个顶部容器;聚焦;根据重点控制?,java,swing,jpanel,focus,Java,Swing,Jpanel,Focus,我有一个应用程序,它显示一个JFrame,其中有几个JPanel(a)。每个JPanel A中都有一些控件,还有一些复杂的组件包含额外的控件。现在,我的应用程序需要知道JPanel a所包含的一组控件中的哪一个正在被使用,这样它就可以突出显示JPanel a 以下是一些代码作为示例: public class MyApp extends JFrame { private JPanel A1 = new JPanel(); private JPanel A2 = new JPane
public class MyApp extends JFrame
{
private JPanel A1 = new JPanel();
private JPanel A2 = new JPanel();
private JPanel A3 = new JPanel();
public MyApp()
{
// Add components to the layout, initialize things, etc
...
// Lets suppose each JPanel has 2 components
JComponent C1 = new JComponent();
JComponent C2 = new JComponent();
A1.add(C1);
A1.add(C2);
JComponent C3 = new JComponent();
JComponent C4 = new JComponent();
A2.add(C3);
A2.add(C4);
JComponent C5 = new JComponent();
JComponent C6 = new JComponent();
A3.add(C5);
A4.add(C6);
}
}
因此,我想知道的是,根据使用的JComponent,当前哪个JPanel(A1、A2或A3)是“重点”的。重要的一点是,我不能直接访问主框架中的所有控件,因为这些JComponent在我的应用程序的其他地方被定义为类。我可以修改它们,但我不能说“如果它是C1中的textfield1,那么它就是A1”
我一直在阅读,到目前为止,我认为我要做的是实现一个PropertyChangeListener(如本节所示,来自Focus子系统的文档),从每个面板内的控件跟踪焦点,然后将该信息发送到我的应用程序
有没有更好的方法来做到这一点,我不知道?
非常感谢。首先看一看,以获得对聚焦组件的引用,然后循环遍历每个父引用,直到它等于您的一个面板或父引用为null