requestFocusInWindow(boolean)在JComponent中具有受保护的访问权限?

时间:2013-03-16 23:46:59

标签: java swing user-interface jcomponent

我正在尝试为程序分配构建GUI,左边的顶部开始基本上有两个按钮,右边是继续,面板位于底部。但它告诉我:

  

错误:requestFocusInWindow(boolean)具有受保护的访问权限   JComponent的

我曾经遇到过这种情况,我觉得我不明白这意味着什么,任何人都有一个很好的解释我用Google搜索并且似乎找不到任何东西所以我觉得这可能是愚蠢的。

以下是我用来构建GUI的代码:

import javax.swing.*;
import java.awt.*;

public class PendulumWindow {

    protected JFrame pendFrame;
    protected JPanel pendPanel;
    protected JButton resume;
    protected final int SIZE_X = 500;
    protected final int SIZE_Y = 450;
    protected Dimension pendPanSize = new Dimension(SIZE_X, SIZE_Y);

    public PendulumWindow() {

    }

    public PendulumWindow(String s) {
        makePanel();
        makeFrame();
    }

    public void makePanel() {
        pendPanel = new JPanel();

        pendPanel.setPreferredSize(pendPanSize);
        pendPanel.setFocusable(true);
        pendPanel.requestFocusInWindow(true);
        pendPanel.setBackground(Color.BLUE);
   }

   public void makeFrame() {
        pendFrame = new JFrame("Pendulum");
        start = new JButton("start");
        resume = new JButton("resume");

        //---------- FRAME PROPERTIES ----------//

        pendFrame.setSize(500,500);
        pendFrame.setVisible(true);
        pendFrame.setResizable(true);
        pendFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //---------- ADD ELEMENTS TO FRAME ----------//

        pendFrame.setLayout(new BorderLayout());
        pendFrame.add(start, BorderLayout.WEST);
        pendFrame.add(resume, BorderLayout.EAST);
        // pendFrame.add(pendPanel, BorderLayout.SOUTH);
   }

   public static void main(String[] args) {
        PendulumWindow window = new PendulumWindow("Pendulum");
   }
}

2 个答案:

答案 0 :(得分:3)

文档显示requestFocusInWindow(boolean)protected,因此只能由JComponent的子类调用。相反,您应该使用可公开访问的requestFocusInWindow

答案 1 :(得分:0)

使用requestFocus(),而不是requestFocusInWindow()