Полноэкранная оконная система в разгаре - PullRequest
3 голосов
/ 28 февраля 2012

Я работаю над приложением, которое должно быть в состоянии работать как на одном мониторе, так и на нескольких мониторах. В настоящее время я знаю только два подхода к достижению того, что мне нужно, и ни один из них не идеален.

Если я создаю один JFrame для всех мониторов, я могу использовать JInternalFrames для своих подвижных окон. Недостатком является то, что этот подход не будет работать, когда я нахожусь на мониторах другого размера / разрешения, так как панель инструментов или что-то еще, что я добавляю в JFrame, не выстраивается в линию, и у меня может остаться какая-то операционная система, просматривающая все.

Другой подход заключается в создании нового JFrame для каждого графического устройства и использовании JDialogs в качестве моих окон. Недостатком здесь является то, что у меня меньше контроля над JDialogs и я не могу ограничивать движение. В идеале я хотел бы иметь возможность ограничить положение JDialog, чтобы он не мог перекрывать мою панель инструментов.

Есть ли лучшие подходы?

1 Ответ

0 голосов
/ 29 февраля 2012

Вы можете использовать свой последний подход и просто добавить ComponentListener для каждого из ваших JDialogs:

final JDialog dialog = new JDialog();
dialog.addComponentListener(new ComponentAdapter()
{
    @Override
    public void componentMoved(ComponentEvent e)
    {
        if (dialog.getBounds().intersects(toolbar.getBounds()))
            moveToAvoidConflict(dialog);
    }
}

И ваш метод moveToAvoidConflict() будет перемещать диалоговое окно вверх, вниз, влево или вправо, чтобы оно больше не пересекало вашу панель инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...