Java JScrollPane проблема - PullRequest
       5

Java JScrollPane проблема

1 голос
/ 01 апреля 2012

Это мой код:

public class JJD extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public JJD() {
        super("test");

        JPanel center = new JPanel();
        center.setBackground(Color.red);
        JScrollPane pane = new JScrollPane(center);

        this.getContentPane().add(pane, BorderLayout.CENTER);
        final JFrame fr = this;
        this.addWindowFocusListener(new WindowFocusListener() {

            @Override
            public void windowLostFocus(WindowEvent arg0) {
                // TODO Auto-generated method stub

                if (fr.isValid()) {
                    System.out.println("FOCUS VALID!");
                } else {
                    System.out.println("Focus INVALID");
                }
            }

            @Override
            public void windowGainedFocus(WindowEvent arg0) {
                // TODO Auto-generated method stub

            }
        });

        this.setVisible(true);
        this.setSize(500, 500);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame fr = new JJD();
        fr.validate();

    }

}

Не могли бы вы сказать, почему слушатель распечатывает, что мой кадр недействителен?Я пробовал и другие методы, такие как pack() revalidate(), и все же слушатель распечатывает, что мой кадр недействителен.

Подсказка: проблема из-за JScrollPane, но я не могу понять,как сделать мой фрейм действительным.

1 Ответ

2 голосов
/ 01 апреля 2012

Я думаю, это может быть потому, что вы не переопределяете метод windowsGainedFocus.

public void windowGainedFocus(WindowEvent arg0) {
    if (fr.isValid()) {
        System.out.println("FOCUS VALID!");
    } else {
        System.out.println("Focus INVALID");
    }
}

Вы можете переопределить его так же, как и другой, и посмотреть, является ли он действительным.Если это не работает, вы можете добавить fr.validate() вызов метода в предложении else.Я надеюсь, что это поможет.

...